1.什么是I/O中断
STC32G系列支持所有的I/O口中断,且支持4种中断模式:下降沿中断、上升沿中断、低电平中断、高电平中断。每组I/O口都有独立的中断入口地址,且每个I/O口可独立设置中断模式。
2.I/O中断的用法
注意一个问题:目前在Keil的C251编译环境下,中断号只支持0~31,即中断向量必须小于0100H。
一旦中断号超出了,就会编译出错:
解决这个问题,目前可以使用最简单的方法。有网友提供了 keil 中断号拓展插件, 安装到 C51、 C251 目录下也可以解决中断
向量号超 31 时编译报错的问题。
3.中断优先级的设置
3.1编写P35口的I/O中断
利用中断改变SEG0的数值(显示0~9),延时500ms,观察定时器刷新数码管。
数码管一个一个刷新过去,SEG0显示也会自加。
8月27日模数转换器
1.模数转换器(ADC)是什么:
ADC 是模/数转换器或者模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模/数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。
冲哥在这里用一个视频和一个Excel表格,很清晰明白地讲述了ADC的分频和转换精度的关系。
2.STC32G单片机ADC使用原理:
ADC_CONTR ADC控制寄存器 有5个位
ADC_POWER0:关闭ADC1:打开ADC
ADC_STARTADC 转换启动控制位。写入 1 后开始 ADC 转换,转换完成后硬件自动将此位清零。
ADC_FLAG ADC 转换结束标志位。当 ADC 完成一次转换后,硬件会自动将此位置 1,并向 CPU 提出中断请求。此标志位必须软件清零。
ADC_EPWMT使能 PWM 实时触发 ADC 功能。
ADC_CHS ADC 模拟通道选择位。
3.ADC速度计算公式:
12位ADC转换速度 = MCU工作频率SYSclk / 2×(SPEED + 1)×[(CSSETUP + 1) + (CSHOLD + 1) + (SMPDUTY + 1) + 12]
4.ADC 转换结果计算公式:
12位ADC转换结果 = 4096 × ADC被转换通道的输入电压Vin / ADC外部参考源的电压
5.ADC应用参考图
6.编写最简单的ADC采集代码
编译通过
8月27日下NTC温度采集
1.NTC的原理
NTC是 Negative Temperature Coefficient 的缩写,意思是负的温度系数,泛指负温度系数很大的半导体材料或元器件,所谓NTC热敏电阻器就是负温度系数热敏电阻器。温度低时,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高;随着温度的升高,载流子数目增加,所以电阻值降低。NTC热敏电阻器在室温下的变化范围在10O~1000000欧姆,温度系数-2%~-6.5%。NTC热敏电阻器可广泛应用于温度测量、温度补偿、抑制浪涌电流等场合。
2.开发板上NTC应用的电路原理图
3.编写程序:
注意需要将 P1M0 设置为高阻输入P1M0 = 0x00; P1M1 = 0x08;
编译时出现过错误,经修改后正常通过。
本帖最后由 sun5304 于 2023-8-28 16:08 编辑
8月28日串口通信
1.串口通信的基础知识
通信是指设备之间通过一定的协议进行的信息交换。每次发送一位数据的称为串行通信,多位一起发送的称为并行通信。
我们所说的串口通信是串行通信的其中一种。
串口通信,是指外设与计算机之间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节省通信成本,但其传输速度比并行传输低。
STC32G 系列单片机具有 2 个全双工同步/异步串行通信接口( USART1 和 USART2)。每个串行口由 2 个数据缓冲器、一个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据。
STC32G 系列单片机具有 2 个全双工异步串行通信接口( UART3 和 UART4)。每个串行口由 2 个数据缓冲器、一个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据。
异步通信是我们最常采用的通信方式,异步通信采用固定的通信格式,数据以相同的帧格式传送。每一帧由起始位、数据位、奇偶校验位和停止位组成。
同步通信时,通信双方共用一个时钟,这是同步通信区分于异步通信的最显著的特点。在异步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,以致占用了时间。所以在数据块传送时,为提高通信速度,常去掉这些标志,而采用同步通信。同步通信中,数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端和接收端的同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到一块数据传送完毕。
同步通信 异步通信
全双工: 指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
半双工:指一个时间内只有一个方向的信号传输(A→B或B→A)。
在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标;
数据位(Data Bits):数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。
停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
串口通信中,要务必保证 波特率、数据位、停止位、校验位 在发送端与接收端保持一致,才能接收到完整的数据。
2.STC32的串口通信实现原理
串口 1 模式 1,模式 1 波特率计算
当软件设置 SCON 的 SM0、 SM1 为“ 01”时,串行口 1 则以模式 1 进行工作。此模式为 8 位 UART格式,一帧信息为 10 位: 1 位起始位, 8 位数据位(低位在先)和 1 位停止位。波特率可变,即可根据需要进行设置波特率。 TxD 为数据发送口, RxD 为数据接收口,串行口全双工接受/发送。
串口 1 的波特率是可变的,其波特率可由定时器 1 或者定时器 2 产生。当定时器采用 1T 模式时( 12倍速),相应的波特率的速度也会相应提高 12 倍。
3.串口通信代码的实现:
这是使用232转换串口输出的典型电路
4.编写串口1通信程序:
已经编译通过
8月29日串口应用
1.串口与PC通信的接线
TX和RX代表一组串口
TXD几和RXD几 表示这是第几组串口
MCU串口出来的信号都是TTL电平。
TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”。这样的数据通信及电平规定方式,被称作TTL信号系统。
芯片与芯片之间通讯,如果通信协议和电平都一样,直接TX和RX连接就可以通信。
串口和电脑通信,因为电脑没有串口,需要借助USB转串口的工具。推荐使用官方工具STC-USB LINK 1D 或者 USB转双串口工具。
2.利用实验箱示例代码移植驱动程序
首先对要移植过来的程序进行下载实验,验证没有问题再进行移植,防止出错。
跟着老师讲的步骤一步一步进行移植。
虽然验证通过了,对一些写法还没有完全搞懂,等有机会在实验箱做一下验证应该对每条语句的理解更好一些。
楼主对我们的免费公开课 认可/支持/给力,建议主动联系我们同事
=====提前获得 【免费+包邮送】的 STC32G12K128实验箱 或 STC8H8K64U实验箱
=====现在送的,都可以利用MCU自带的 硬件USB直接仿真,硬件USB直接下载
【免费+包邮】 送/申样/采购 可加 如下 QQ或微信联系
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592要求 【免费+包邮】 送, 还免费教仿真
加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ:2593903262;微信:18106296598要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服张经理QQ:3141888640 ;微信:19952583265 要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服张经理QQ:3141888640 ;微信:19952583265 要求 【免费+包邮】 送, 还免费教仿真
工作时间:8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)
【免费+包邮】 送/申样/采购传统电话热线:0513-55012928、0513-55012929、0513-55012966
工作时间:8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)
8月30日 CDC 串口通信
1.CDC串口与PC通信接线
STC32G系列芯片与PC通信,无需USB转TTL工具。根据板子上不同类型的USB口,选择对应的一根数据线连接二端即可通信。
板子上的P30和P31连接电脑D-和D+,加上单片机外围电路即可实现下载与通信。
2.USB-CDC 虚拟串口和传统串口相比有如下优点:
数据传输更快: USB-CDC 虚拟串口忽略传统串口的波特率,传输速度的比特率即为全速 USB的通讯速度 12MBPS(即每秒 12M 位)
使用更简单便捷: USB-CDC 虚拟串口忽略传统串口的起始位、 停止位等冗余信息
数据传输更可靠: USB-CDC 虚拟串口丢弃传统串口简单的软件奇偶校验机制, USB-CDC 虚拟串口数据传输时有 USB 硬件 CRC 校验,以及校验出错重传机制,保证数据 100%正确
自动缓存数据: USB-CDC 虚拟串口会自动缓存数据。单片机在没有处理完成上位机下传的上一笔数据时,如果此时上位机又有新的数据下传, 虚拟串口会自动将新的数据缓存, 从而保证数据 100%不会丢失或被覆盖。
3.CDC串口实现不停电下载
1)下载 lib库和头文件
2)新建工程中,加载lib库,需要在 MAIN.C文件中加入不停电自动ISP下载命令:char *USER_STCISPCMD = "@STCISP#";
3)调用头文件并初始化USB功能
4)设置工程参数,编译选项等
5)首次下载手动进入HID下载模式下载
6)下载完成等待生成CDC串口号,设置ISP软件参数
7)在ISP软件中设置好如下选项:
执行完如上步骤,再也不需要手动进下载模式了,只要ISP软件点一下下载程序,就可以自动烧录。
4.CDC 串口通信
验证通过
8月31日 看门狗
1. 系统复位:
复位有什么用呢? 复位的主要作用是把单片机内部的特殊功能寄存器置于初始状态,使单片机硬件、软件从一个确定的、唯一的起点开始工作。
2. 看门狗介绍:
看门狗是一个计数器,它的基本功能是在软件有问题和程序跑偏后重启系统。看门狗正常工作时会自动计数,程序进程会定时将其归零。如果系统在某个地方卡住了或者跑了,定时器就会溢出,使系统强制复位。
3.看门狗的意义:
软件的可靠性一直是一个关键问题。任何使用软件的人都可能遇到电脑死机或程序失控的问题,这种问题在嵌入式系统中也存在。由于单片机抗干扰能力有限,在工业现场仪器仪表中,经常因电压不稳和电弧干扰而死机。在水表、电表无人值守的情况下,系统因干扰无法重启。为了保证系统在受到干扰后能自动恢复正常,看门狗定时器的使用是非常有价值的。
4. 看门狗实现原理:
在系统运行以后也就启动了看门狗计数器,看门狗就开始自动计数,如果到了一定的时间还不去清理看门狗(也叫喂狗),那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清理看门狗。
5. 看门狗代码的实现:
编译通过
页:
1
[2]