找回密码
 立即注册
查看: 1331|回复: 15

我打算重新写写stc32的学习笔记

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-2 16:02:05 来自手机 | 显示全部楼层 |阅读模式
之前写了俩次都没有通过   重新再来  
因为我已经有stm32的基础   并且大二上已经学习过51单片机  当时用的普中的51开发板
目前已经大二下了    想申请实验箱  重头再来
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:438
  • 最近打卡:2025-05-08 13:19:57

33

主题

2355

回帖

4880

积分

论坛元老

积分
4880
发表于 2024-7-2 16:37:08 | 显示全部楼层
我觉得你都不如多回答一些技术问题用积分换个了
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:450
  • 最近打卡:2025-05-06 04:24:11

17

主题

533

回帖

1330

积分

金牌会员

积分
1330
发表于 2024-7-2 17:19:53 | 显示全部楼层
你也是普中啊 我也是普中的STC89c51 入门
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-05-08 00:01:49
已绑定手机

19

主题

3196

回帖

4956

积分

论坛元老

积分
4956
发表于 2024-7-2 18:05:56 来自手机 | 显示全部楼层
相信自己一定可以的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-2 19:17:06 | 显示全部楼层
第三集的内容是安装 keil    c251  首先需要找到  keil  c251的安装包  这里选择百度  如图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


成功之后如图  
截图202407021909052426.jpg
截图202407021912375844.jpg
截图202407021915571011.jpg
截图202407021917048358.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-2 20:03:40 | 显示全部楼层
本帖最后由 asys 于 2024-7-2 20:05 编辑

第四集是点灯   
这里用自己做的最小系统板展示
我将p5.0 作为led的控制端口

首先需要在keil-project  中new  project  
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软件快速配置非常方便
并且成点亮  如图  

截图202407021930138797.jpg
截图202407021958454290.jpg
截图202407021959588261.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-2 20:43:32 | 显示全部楼层
刚不小心把typec口拔掉了  emmm现在写不了硬件选项参数
截图202407022042507123.jpg
截图202407022043315486.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-2 21:41:53 | 显示全部楼层
第五集
冲哥先是把这段程序复制进了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




截图202407022112571333.jpg
截图202407022141474495.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-05-07 08:37:37
已绑定手机

4

主题

153

回帖

308

积分

中级会员

积分
308
发表于 2024-7-2 21:44:23 | 显示全部楼层
我也是2012年买的普中
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-01-19 13:42:05

7

主题

39

回帖

99

积分

注册会员

积分
99
发表于 2024-7-6 17:43:33 | 显示全部楼层
本帖最后由 asys 于 2024-7-6 17:49 编辑

我又来写帖子了  主要是 之前开发板坏了     
那个usb用无铅的锡焊的很脆   建议大家用有铅的来 焊接那四个固定的地方

截图202407061743312841.jpg
截图202407061748561843.jpg
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 03:05 , Processed in 0.147010 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表