找回密码
 立即注册
楼主: zhange

【冲哥版】stc32学习心得

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-16 17:09:24 | 显示全部楼层
本帖最后由 zhange 于 2024-5-16 17:28 编辑

第二十二集:CDC串口通信


1.cdc的优势,我们一直使用的就是cdc

截图202405161708253238.jpg


2. 第一次下载需要手动下载一次,以后就解放双手了。。


3.cdc可以去启动虚拟的数码管,12864屏等,等学完课程研究吧。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-16 20:52:43 | 显示全部楼层
本帖最后由 zhange 于 2024-5-16 21:05 编辑

第二十三集:看门狗


1.系统复位
复位的主要作用是把单片机内部的特殊功能寄存器置于初始状态,使单片机硬件,软件从一个确定的,唯一的起点开始工作。

2.复位方式
上电复位-低压复位-复位脚复位-看门狗复位(做项目看门狗很重要)

3.看门狗
其实是一个计数器,基本功能,软件或单片机出问题后重启系统,让系统回到初始状态。
看门狗正常工作时会自动计数,程序进程会定时将其归零。

看门狗计数器清零俗称喂狗。

看门狗计数器是一个独立的计数器,不会死机。

溢出时间不要卡点,要多上一点。


4.以前老听说看门狗,今天老师一说  茅塞顿开。。。。。谢谢冲哥
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-17 20:02:08 | 显示全部楼层
本帖最后由 zhange 于 2024-5-18 05:52 编辑

第二十四集:比较器

1. 电压比较器:通过比较两个电压的大小,来及时相应一些工作。

2.比较器内部结构
截图202405172007068979.jpg

3.模拟滤波可以过滤掉比较输入信号中的毛刺信号,数字滤波可以等待输入信号更加稳定后再进行比较。


4.比较器结果有三种输出查询方式:一:中断 二:比较结果直接寄存器查询  三:直接端口输出结果


5.可以用比较器给我的8266加一个定时查询网络时间的功能。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-18 06:10:17 | 显示全部楼层
本帖最后由 zhange 于 2024-5-18 06:51 编辑

第二十五集:FLASH模拟EEPROM

1.flash 程序存储  eeprom 掉电保持存储
flash 存储程序运行代码   eeprom存储用户数据

2.eeprom一次删除512字节   eeprom只能由一写为0,不能由0写1.

3.stc32 只能操作一个字节

4.  eeprom最高只能是64k字节。

截图202405180628454853.jpg


5.为啥老师擦出后  读出来数码管显示8  因为他的擦除应该是全部吧位改为1了   8个一  0xff   数码管显示8

6.根据按照IEC命名标准 [1-2],用于二进制存储单位的标准命名是KiB, MiB等,1kiB = 1024B。这是由数据流的二进制存储法决定的。64k并不是64000字节???? eeprom一次删除0.5k





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-18 07:09:36 | 显示全部楼层
本帖最后由 zhange 于 2024-5-18 09:23 编辑

第二十六集:DS18B20温度传感器(单总线)理论分析



哇塞  快学完了,,加油  zhange

1.ds18b20   数字温度传感器  体积小  价格便宜 2.5搞定   我是降龙棍  只能买

截图202405180709228657.jpg

2.电容通交隔直


3.数值乘以精度就是温度了。默认12位精度。
截图202405180739223838.jpg

截图202405180742252139.jpg


4.单片机和18b20都有独一无二的编码,以后学习使用。。


5. 看得有点头大   ,二刷吧。。。



====二刷了====

6.外部电源供电更稳定。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-18 09:09:47 | 显示全部楼层
本帖最后由 zhange 于 2024-5-19 09:59 编辑

第二十六集:DS18B20温度传感器(单总线)代码实现


1.这课信息量有点大  我消化消化 再来写


2.已经实现了stc32 循环扫描2个ds18b20  看我其他帖子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-19 09:03:51 | 显示全部楼层
本帖最后由 zhange 于 2024-5-19 14:21 编辑

第二十七集:软件模拟SPI


1.spi  另一个总线 同步串口

上节学的单总线(one-wire)只有一根数据线,系统中的数据交换、控制都由这根线完成

截图202405190902459323.jpg


2. 通信方式

  • 单主单从
  • 互为主从
  • 单主多从


3. 看了一遍看得不是很懂

====二刷吧====

4.这里是模拟的spi把,并不是硬件的。

5.产生时钟的一侧称为主机,另一侧从机。。

6.时钟极性和时钟相位共同控制spi的模式。

7.msb和lsb这里是软件模拟  先发哪个都行。。。

8.写一个字节

  1. //写一个字节
  2. void spiXieByte(unsigned char i )
  3. {
  4.         unsigned char q;
  5.         for(q = 0; q<8 ; q++)
  6.         {
  7.                 if(i & 0x80)
  8.                 {
  9.                         MOSI = 1;
  10.                 }else
  11.                 {
  12.                         MOSI = 0;
  13.                 }
  14.                 SCLK = 1;
  15.                 SCLK = 0;
  16.                 i = i<<1;
  17.         }
  18. }
复制代码
9.读一个字节
  1. //读一个字节
  2. unsigned char spiDuByte(void)
  3. {
  4.         unsigned char i;
  5.         unsigned char dat = 0;
  6.         SCLK = 0;
  7.         for(i=0; i<8; i++)
  8.         {
  9.                 SCLK = 1;
  10.                 dat = dat<<1;
  11.                 if(MISO)
  12.                 {
  13.                         dat = dat|1;
  14.                 }else
  15.                 {
  16.                         dat = dat|0;
  17.                 }
  18.                 SCLK = 0;
  19.         }
  20.         
  21.         return dat;
  22. }
复制代码
10.初始化
  1. void spiInit(void)
  2. {
  3.         CS   = 1;
  4.         MISO = 1
  5.         WP   = 1;
  6.         MOSI = 1
  7.         SCLK = 0;
  8. }
复制代码



最后:写程序成功

截图202405191421348885.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-09-12 20:44:49

2

主题

64

回帖

358

积分

中级会员

积分
358
发表于 2024-5-19 09:54:46 | 显示全部楼层
先学冲哥?还是布丁好呀
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-19 09:59:38 | 显示全部楼层
qike*** 发表于 2024-5-19 09:54
先学冲哥?还是布丁好呀

学冲哥 申请个实验箱吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-06-17 07:01:20

62

主题

830

回帖

1552

积分

金牌会员

积分
1552
发表于 2024-5-19 19:12:00 | 显示全部楼层
本帖最后由 zhange 于 2024-5-20 10:14 编辑

第二十八集:硬件SPI读写FLASH芯片


1.硬件spi:全双工,高速,同步串行总线

2.SPIF:接收、发送完成1字节,硬件置1.

3.使能spi必须放到最后。


4.使用宏选择硬件函数和软件函数


#if xuanze==0
//这里是软件模拟的函数代码
#else
//这里是硬件函数代码
#endif

这个老师以前使用过一次,没关注过,现在看蛮方便的。。。。

5.通信真的是单片机的精髓。好好学,二刷开启。。。。


====二刷版====

1.stc3212k128有三组spi

系统硬件spi   usart1和usart2 的spi接口。。他们都能选择io口。
截图202405192052318494.jpg


2.STC32G12K128 系列没有超时控制功能

3.软件模拟的时候没有DORDSPI 数据位发送/接收的顺序
0:先发送/接收数据的高位(MSB
1:先发送/接收数据的低位(LSB
软件不设置,硬件必须设置,看读取的模块

4.接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以进行下一个数据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据将丢失。


5.疑问看图
截图202405201014212278.jpg


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-19 05:56 , Processed in 0.138929 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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