zhange 发表于 2024-5-16 17:09:24

本帖最后由 zhange 于 2024-5-16 17:28 编辑

第二十二集:CDC串口通信


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




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


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

zhange 发表于 2024-5-16 20:52:43

本帖最后由 zhange 于 2024-5-16 21:05 编辑

第二十三集:看门狗


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

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

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

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

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

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


4.以前老听说看门狗,今天老师一说茅塞顿开。。。。。谢谢冲哥

zhange 发表于 2024-5-17 20:02:08

本帖最后由 zhange 于 2024-5-18 05:52 编辑

第二十四集:比较器

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

2.比较器内部结构


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


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


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



zhange 发表于 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字节。




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

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





zhange 发表于 2024-5-18 07:09:36

本帖最后由 zhange 于 2024-5-18 09:23 编辑

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



哇塞快学完了,,加油zhange

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



2.电容通交隔直


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





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


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



====二刷了====

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

zhange 发表于 2024-5-18 09:09:47

本帖最后由 zhange 于 2024-5-19 09:59 编辑

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


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


2.已经实现了stc32 循环扫描2个ds18b20看我其他帖子

zhange 发表于 2024-5-19 09:03:51

本帖最后由 zhange 于 2024-5-19 14:21 编辑

第二十七集:软件模拟SPI


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

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




2. 通信方式


[*]单主单从
[*]互为主从
[*]单主多从


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

====二刷吧====

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

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

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

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

8.写一个字节

//写一个字节
void spiXieByte(unsigned char i )
{
      unsigned char q;
      for(q = 0; q<8 ; q++)
      {
                if(i & 0x80)
                {
                        MOSI = 1;
                }else
                {
                        MOSI = 0;
                }
                SCLK = 1;
                SCLK = 0;
                i = i<<1;
      }
}9.读一个字节
//读一个字节

unsigned char spiDuByte(void)
{
      unsigned char i;
      unsigned char dat = 0;
      SCLK = 0;
      for(i=0; i<8; i++)
      {
                SCLK = 1;
                dat = dat<<1;
                if(MISO)
                {
                        dat = dat|1;
                }else
                {
                        dat = dat|0;
                }
                SCLK = 0;
      }
      
      return dat;
}10.初始化
void spiInit(void)
{
      CS   = 1;
      MISO = 1
      WP   = 1;
      MOSI = 1
      SCLK = 0;
}


最后:写程序成功




qike009 发表于 2024-5-19 09:54:46

先学冲哥?还是布丁好呀

zhange 发表于 2024-5-19 09:59:38

qike009 发表于 2024-5-19 09:54
先学冲哥?还是布丁好呀

学冲哥 申请个实验箱吧{:titter:}

zhange 发表于 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口。



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

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

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


5.疑问看图



页: 1 2 3 4 [5] 6 7
查看完整版本: 【冲哥版】stc32学习心得