- 打卡等级:偶尔看看I
- 打卡总天数:16
- 最近打卡:2026-03-10 09:20:50
中级会员
- 积分
- 222
|
发表于 2026-3-10 09:20:50
|
显示全部楼层
学习打卡第四天
很久没有来了, 今天有空来继续打卡!!
今天调试一个小功能, AI8051U的串口超时中断
STC挺能把握用户心理, 这种小功能也能考虑到, 众所周知这个功能自己用定时器也能实现, 但是 现在有了这功能, 从一定程度上说 使通讯更高效了
这里我使用了官方提供的擎天柱小板的程序集改的
先大致说下我使用的配置, 后续会上传实验程序
硬件: 擎天柱 & USB转TTL & 杜邦线 & TYPE-C数据线
软件: 串口调试助手
串口: 串口2(P12&P13)
波特率: 115200
下载方式: 不停电下载
定时器: 定时器0(100us)中断
程序大致流程:
1.初始化定时器/串口2(包括超时中断, SCALE=0, 用波特率位数来计数超时, 业界好像说3.5个字节(即35位)就可以判定串口空闲)
2.主循环中每3s从串口2向电脑串口发送UART2_OTCounter(16bit的), 程序中可以看出
3.手动从串口调试助手向串口2发送任意字符串, 串口2中断程序中接受到数据就会清零UART2_OTCounter
从串口助手就可以看出超时时间是不是符合自己设定的时间, 上图:
程序中设置了超时长度控制寄存器TM[23:0]=104, 即(0x68), 如图所示:
这里需要注意官方文档说明
当TM=100时, (1000000us/115200)*100 ≈ 868us
当TM=104时, (1000000us/115200)*104 ≈ 902us
由于定时器定时100us
所以在串口助手中可以看到UART2_OTCounter的值为 8(最上面) 或者 9
从而验证了串口超时中断
鉴于串口中断1个字节就会产生一个, 不如将它交给DMA来管理
所以, 后续打卡就是让DMA来管理串口中断
DMA已经存在很多年了, 但是还没有遇到非要使用DMA的场景, 期待接下来的应用了....
最后程序打包, 欢迎批评指正
11-串口2中断模式与电脑收发测试 已改.zip
(421.36 KB, 下载次数: 1)
|
|