我打算重新写写stc32的学习笔记
之前写了俩次都没有通过 重新再来因为我已经有stm32的基础 并且大二上已经学习过51单片机当时用的普中的51开发板
目前已经大二下了 想申请实验箱重头再来 我觉得你都不如多回答一些技术问题用积分换个了{:4_167:} 你也是普中啊 我也是普中的STC89c51 入门 相信自己一定可以的 第三集的内容是安装 keil c251首先需要找到keilc251的安装包这里选择百度如图1
我选择的是csdn
安装完成之后需要激活
用管理员权限打开keil
搜索keil keygen
在keil的file的license management
将Computer ID 复制到打开的注册机的CID中,并将注册机的Target设置为C251,点击Generate,会生成一串字符
将生成的注册码复制到软件中并点击add lic按钮
这样就激活成功了接下来是导入型号和头文件 这里需要的是stcisp
在keil仿真测试中选择添加型号和头文件到keil中选择keil的安装路径
我的keil路径在C:\Keil_v5
成功之后如图 本帖最后由 asys 于 2024-7-2 20:05 编辑
第四集是点灯
这里用自己做的最小系统板展示
我将p5.0 作为led的控制端口
首先需要在keil-project中newproject
device选择stc32g12k128即可
需要在Target 1——Source Group 1下右键Source Group 1点击 addnew ltem to group
选.c文件 命名为main
接着点开main.c 在keil的文本编辑器中右键include头文件新建主函数 main
然后需要设置端口模式看手册如图
如图一个寄存器上面有八个位 通过对P5M1 /P5M0 上的不同位写入不同的01组合可以实现 准双向口推挽开漏高阻等组合
例如P5M0 = 0x01; P5M1 = 0x00; 这里就是在寄存器地址0XCA上面写入 00000001这样将P50M0置1了
在寄存器地址0XC9上写入0000000就是对P50M1操作 这样 这样将P50M1置0了 对寄存器上的每一位都可以操作 对应的选择的是推挽输出
这里可以使用stcisp软件快速配置非常方便
并且成点亮如图
刚不小心把typec口拔掉了emmm现在写不了硬件选项参数 第五集
冲哥先是把这段程序复制进了keil里
这里#include "COMM/stc.h"
#include "COMM/usb.h"
sys_init(); //USB功能+io初始化
usb_init(); //usb库的初始化
EA = 1; //开中断
if( DeviceState != DEVSTATE_CONFIGURED ) //这里是看usb有没有连接成功
continue;
if( bUsbOutReady ) //判断有没有接收到数据
{
usb_OUT_done(); //这个可能是开启串口输出keil看不到函数内容不知道emmm
printf("%03.3f\r\n",1.12);//发送数据
}
}
这个usb只有个头文件我用keil想看函数内容还看不到如图1
接下来冲哥讲了printf的使用教程
%d:输出有符号十进制整数。
%u:输出无符号十进制整数。
%f:输出浮点数。
%e 或 %E:输出指数形式的浮点数。
%g 或 %G:输出浮点数,自动选择 %f 或 %e。
%c:输出单个字符。
%s:输出字符串。
%p:输出指针的值(通常是十六进制形式)。
%x 或 %X:输出十六进制整数,%x 输出小写字母,%X 输出大写字母。
%o:输出八进制整数。
%ld、%lu、%lf 等:用于输出长整型、无符号长整型、长浮点数等,l 表示 long。
printf("这里写格式指定符",这里写要写入的对应的数据)
后面冲哥讲了ASCII码表里面的对应编码来使用 printf输出相应数据
二进制十进制十六进制转换方法
二进制转十进制
二进制转十进制的步骤是将每个二进制位乘以其对应的2的幂次,然后将结果相加。
例如将1101转换成十进制
1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0
= 8 + 4 + 0 + 1
= 13
将十进制转换为二进制数可以用除2取余
第一个除2余得到的数为个位
第二个为十位依次类推
2进制转16进制
将二进制数分为四位的组
将每组转换为相应的十六进制数字
我觉得还是用计算器算方便 但是不排除需要自己算的时候 比如考试。。。。
后面冲哥讲的是c语言运算符在printf中的使用
我将这些运算符列出来
算术运算符
+:加法运算符,用于两个数相加。
-:减法运算符,用于两个数相减。
*:乘法运算符,用于两个数相乘。
/:除法运算符,用于两个数相除。
%:取模运算符,用于求两个数相除的余数。
关系运算符
==:等于运算符,用于判断两个数是否相等。
!=:不等于运算符,用于判断两个数是否不相等。
>:大于运算符,用于判断左边的数是否大于右边的数。
<:小于运算符,用于判断左边的数是否小于右边的数。
>=:大于或等于运算符,用于判断左边的数是否大于或等于右边的数。
<=:小于或等于运算符,用于判断左边的数是否小于或等于右边的数。
逻辑运算符
&&:逻辑与运算符,用于两个条件都为真时结果才为真。
||:逻辑或运算符,用于两个条件中有一个为真时结果就为真。
!:逻辑非运算符,用于反转条件的真假。
赋值运算符
=:赋值运算符,用于将右边的值赋给左边的变量。
+=:加后赋值运算符,相当于 x = x + y。
-=:减后赋值运算符,相当于 x = x - y。
*=:乘后赋值运算符,相当于 x = x * y。
/=:除后赋值运算符,相当于 x = x / y。
%=:取模后赋值运算符,相当于 x = x % y。
位运算符
&:按位与运算符,用于两个数的每一位进行逻辑与操作。
|:按位或运算符,用于两个数的每一位进行逻辑或操作。
^:按位异或运算符,用于两个数的每一位进行逻辑异或操作。
~:按位取反运算符,用于对一个数的每一位进行取反操作。
<<:左移运算符,用于将一个数的所有位向左移动指定的位数。
>>:右移运算符,用于将一个数的所有位向右移动指定的位数。
杂项运算符
? ::条件运算符,用于基于条件表达式的结果选择两个值中的一个。
sizeof():sizeof运算符,用于返回数据类型或变量的大小(以字节为单位)。
&:取地址运算符,用于返回变量的地址。
*:指针运算符,用于解引用指针,访问指向的变量。
自增和自减运算符
++:自增运算符,用于将变量的值增加1。
--:自减运算符,用于将变量的值减少1。
C语言中的运算符具有特定的优先级,决定了表达式中的运算顺序。例如,乘法和除法的优先级高于加法和减法,括号可以用来改变优先级顺序。
最后讲了基本数据类型和取值范围这里看图2
我也是2012年买的普中 本帖最后由 asys 于 2024-7-6 17:49 编辑
我又来写帖子了主要是 之前开发板坏了
那个usb用无铅的锡焊的很脆 建议大家用有铅的来 焊接那四个固定的地方
页:
[1]
2