找回密码
 立即注册
查看: 2004|回复: 30

32G12K128学习记录

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-13 14:28:09 | 显示全部楼层 |阅读模式
32G12K128是我第一个学习的单片机,目前刚上大二,想学习单片机一块的知识,有c语言,数据结构和模电的基础
希望能学得轻松一点。
第一天:第1集:介绍了单片机是是什么,单片机是一种集成电路芯片,它集成了计算机的基本功能部件,内含cpu,存储器,io口等。讲解了原理与应用
第二集:对STC试验箱的外设进行介绍,讲解了一些硬件的功能
第三集:讲解开发环境如何搭建,keil5软件和stc-isp的使用,感觉keil5的环境搭建真的很复杂,搞了好几次才搞定,为什么keil5没有自动补全功能呀,编码过程中变量打错大小写也没提示,这个能调吗求教。
第四集:讲解了LED灯的点亮原理,通过产生高低电平来实现LED灯的点亮,创建了一个用来复制的基本项目,还实现了软件复位可以解放双手不用每次烧录都需要按复位按钮了,虽然弄了好久。
第五集:讲了ASCII值,二进制的转换,printf函数,这些我大多都学过,但是我在实践中还是产生了很多问题
比如
if( DeviceState != DEVSTATE_CONFIGURED )         //                        continue;                if( bUsbOutReady )                                                                                {                        usb_OUT_done();                }

循环前定义变量报错

循环前定义变量报错


循环里定义变量

循环里定义变量



为什么输出只能在这一部分中写呢,这是什么呀,然后我想创建变量,数组啥的都会报错,报错位置都在创建变量和数组的地方,然后我后面发现把创建变量放在循环内部创建就不会 报错这是为什么呀,有人解答吗,对了还有,有人知道这个软件的调试功能怎么用吗,为什么我设置不了断点呀,求救。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-13 14:28:53 | 显示全部楼层
u16 DATA是我定义的变量
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-15 02:24:42 | 显示全部楼层
第二天:
第一天的问题已经解决啦,但是不知道原因..... ,可能是之前的环境搭建问题吧?
第六集LED电灯和花式点灯,定义一个delay函数可以实现闪烁功能,延时功能还是非常好写的,然后我在网上查了一些资料,发现点灯是可以对那一整排进行操作的,例如让P6=1111 1110;那么就可以只让最最后一个灯亮啦
而且可以把二进制转换成16进制,如上的可以等效为P6=0xFE;这样更加简短更方便,应该还可以用数组做个变化的灯型,试验了一下果然可以。
第七集按键点灯,这个上面就发现了很多问题......,先讲内容吧,通过查看P32等端口的电位变化来判断按键是否按下,因为机械抖动的问题可能会导致开关误判,所以可以稍微延迟来减少误差(但是我感觉真的无法避免,是这个原因吗?我用同学的试验箱测试的时候发现按键会多次判断,会导致按键写的程序多次执行,比如我写的按下切换灯型程序,它会连续瞬间执行两次甚至多次?这个可以避免吗,增加延时可以避免吗?),然后就是第二个问题为啥使用bool变量会报错呀?如图:https://www.stcaimcu.com/forum.php?mod=attachment&aid=NTM3NDF8ZGRiN2QwOTZ8MTc0Njk2MjYyOHwwfA%3D%3D
甚至false也报错了,为啥会没定义呢,甚至编译器都给bool类型标记了都报错了。
我找了一下头文件如图: https://www.stcaimcu.com/forum.php?mod=attachment&aid=NTM3NDJ8YTk2MmNkZDF8MTc0Njk2MjYyOHwwfA%3D%3D
里面也包含了stdio.h呀,我又有了发现头文件中把bit加了一个别名BOOL,但是也只能用0和1表示呀。最后我也就只能使用bit类型的变量了,如果用枚举的话应该是可以写出来一个bool类型的变量的,但bool不是c语言的头文件stdio.h中的变量吗,为什么无法使用呢。
有人能解答我的疑问吗,求救

bool报错.png
bit.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-15 02:25:59 | 显示全部楼层
有大佬来帮忙吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:214
  • 最近打卡:2025-05-11 08:38:48

1

主题

47

回帖

74

积分

注册会员

积分
74
发表于 2024-8-15 06:44:32 | 显示全部楼层
BOOL大小写的问题,还有他这个typedef bit BOOL相当于关键字的重命名,bit是用来定义位变量的,值支持0,1不支持true和flase,如果要支持可以加个
#define true 1
#define flase 0
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:385
  • 最近打卡:2025-05-11 09:01:28

1

主题

29

回帖

436

积分

中级会员

积分
436
发表于 2024-8-15 09:07:07 来自手机 | 显示全部楼层
这学习能力太厉害了👍
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-15 11:00:27 | 显示全部楼层
hy*** 发表于 2024-8-15 06:44
BOOL大小写的问题,还有他这个typedef bit BOOL相当于关键字的重命名,bit是用来定义位变量的,值支持0,1 ...

哦哦,明白了,感谢感谢{:5_300:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2025-04-03 11:26:38

4

主题

138

回帖

631

积分

高级会员

积分
631
发表于 2024-8-15 11:34:55 | 显示全部楼层
共同学习,共同进步
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-16 01:45:31 | 显示全部楼层
第三天:第二天的按键多次触发问题解决啦,冲哥视频中说过按键的过程中会产生机械振动导致误触,所以要在按键前加上延迟函数。我就推测是按键结束后会不会也有振动,产生多次触发。
然后我就去网上找按键去除机械振动的方法,果然网上给出的去振动的代码中有去松开振动的延迟。
去机械振动代码如下:
         if(key == 0)   //假设key是检测按键的引脚,0为通路即按下
        {
            delay_ms(10);
            if(key == 0)
            {
               /*****按下后执行的代码******/
            }
            while(!key);         //防止误触
            delay_ms(10);     //去机械振动
            while(!key);        //判断是否松开
            
        }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2024-11-18 21:31:21

1

主题

16

回帖

157

积分

注册会员

积分
157
发表于 2024-8-16 02:30:45 | 显示全部楼层
本帖最后由 不会书 于 2024-8-16 02:33 编辑

第八集:蜂鸣器的应用,由蜂鸣器电路图就可以知道将P54设置为低电压时可以使三极管进入饱和导通状态,设置为高电压就为截止状态,即P54引脚=0时导通蜂鸣器触发,P54=1截止不触发。
通过以上原理可以实现控制蜂鸣器,作业结合前几节课知识即可完成。
第九集:数码管,原理与led类似,由多个发光二极管组成,单个数码管的显示顺序为顺时针a,b,c,d,e,f,g,dp。由原理图知P6可以控制所有数码管共用的笔画。P7则是控制多个数码管的显示。
但是我有点疑问:P6所有数码管共用的话那岂不是每一个数码管的显示都是一模一样的,那不是有点奇怪吗.....
还有一个小发现:P6和之前的LED的引脚是共用的,冲哥这期视频中好像是直接丢弃了led灯,我尝试了一下把P40口打开,然后发现led灯还是可以用的,led显示的都是数码管的时P6所存储的。
蜂鸣器电路图.png
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-11 19:23 , Processed in 0.145634 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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