专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
USART发送中断,挖了TC的祖坟
2019-07-21 02:13
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
10769
0
1646
本帖最后由 shaoyinli 于 2019-4-25 01:27 编辑
谈起USART,许多人一笑而过,不就是USART么
但谈到TC中断
用一万个表情...(希望大神不要打我)。小菜我这几天真的是被TC给搞得生活不能自理,各种清除状态都不起作用,而且会出现各种各样的奇怪现象,倔强的本小菜展现了强大的求生欲...TC的水很深吗?没错,TC的水确实很深。
切入正题...首先,在USART被使能后,也就是USART_Cmd()调用后,TC就会被置1,如果开了中断,程序就发疯了的进中断。还好小菜我还没疯——ST的参考手册上有一句话:在数据传输过程中,若TE上有个上升沿(除了在智能卡模式下),会在数据字传输完成之后发送一个“前导符”(空闲总线)。于是小菜我先使能UE(即调用USART_Cmd(USART1,ENABLE))再使能TE(即在USART_Init( )中的参数结构体中设置USART_Mode=USART_Mode_Tx)会使TE上出现一个上升沿,导致前导符的发送;或者先使能TE再使能UE,由于UE是USART的上电开关,同样会导致TE上出现一个上升沿,导致前导符的发送。将TE的使能与UE的使能分别去掉再实验,都不会发送前导符。前导符的发送完成是系统的第一次数据发送完成,所以会使TC置1,这就是使能USART的发送数据功能之后即使不做任何操作TC也会置1的原因。此时我心中无比狂喜~TC也不过如此嘛..于是我在使能之后立即使用USART_ClearFlag(USART1,USART_FLAG_TC)来一波清除,motherfucker不起作用!TC仍然会抽风似的置1,我得世界颠覆了...
于是小菜我不得不大胆瞎猜:是时间同步的问题,即发送前导符需要一定的时间,当TC手动清除之后前导符还没发送完成,这样就导致清除TC后,TC还是会被置1,也就是不是加清除函数不起作用,而是作用时间不够。通过测量,小菜我是对的~~奉上数据:
baudrate
leading character sending time/us baudrate*time 115200 95 10944000 76800 141 10828800 14400 762 10972800 9600 1144 10982400
发送
看不清?
0条回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>