[技术问答]

M051串口发送中断清除

[复制链接]
1676|20
手机看帖
扫描二维码
随时随地手机跟帖
publicpeople|  楼主 | 2020-2-8 18:11 | 显示全部楼层 |阅读模式
麻烦各位大神 帮忙看看M051串口怎么清除发送中断标志,我看了数据手册没有找到。仿真例程时也没有清除标志。
72665e3e88ca92420.png
558925e3e88e365227.png

使用特权

评论回复
heisexingqisi| | 2020-2-8 20:53 | 显示全部楼层
会不会读中断就自动清零了。

使用特权

评论回复
publicpeople|  楼主 | 2020-2-9 10:02 | 显示全部楼层
heisexingqisi 发表于 2020-2-8 20:53
会不会读中断就自动清零了。

不是,我按照常规进中断,查看中断标志,都没有请。手册上也没有写。实验了好多次,都没有找到怎么清除中断。

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:09 | 显示全部楼层
void UART_ClearIntFlag(UART_T* uart , uint32_t u32InterruptFlag);

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:10 | 显示全部楼层
头文件里有清楚中断的汗水。

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:10 | 显示全部楼层
函数啊,你看看。

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:10 | 显示全部楼层
**
*    [url=home.php?mod=space&uid=247401]@brief[/url] The function is used to clear UART specified interrupt flag.
*
*    @param uart                The base address of UART module.
*    @param u32InterruptFlag    The specified interrupt of UART module.
*                               - UART_ISR_LIN_RX_BREAK_INT_Msk  : LIN bus interrupt
*                               - UART_ISR_BUF_ERR_INT_Msk       : Buffer Error interrupt
*                               - UART_ISR_MODEM_INT_Msk         : Modem interrupt
*                               - UART_ISR_RLS_INT_Msk           : Rx Line status interrupt
*
*    [url=home.php?mod=space&uid=266161]@return[/url] None
*/
void UART_ClearIntFlag(UART_T* uart , uint32_t u32InterruptFlag)

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:13 | 显示全部楼层
貌似这个发送中断是不支持的。

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:31 | 显示全部楼层
857135e3f8b16cb74a.png
终于知道为何没有清理指令了。

使用特权

评论回复
heisexingqisi| | 2020-2-9 12:31 | 显示全部楼层
再次发送时候就自动清理掉了

使用特权

评论回复
publicpeople|  楼主 | 2020-2-9 13:18 | 显示全部楼层
heisexingqisi 发表于 2020-2-9 12:31
再次发送时候就自动清理掉了

关键是我打开发送中断使能,当收到发送保持寄存器空中断标志THER_IF时,总是进入中断函数。
按照这个意思,我要是不写数据进入UART_DAT 一直进入中断。我要是写入新的数据进入UART_DAT,发送中断标志才可以清除。但是,我写入新的数据到UART_DAT之后,它又发送了呀。另外,我仿真的时候可能设置错误,我也没看到THER_IF为0呀。

使用特权

评论回复
publicpeople|  楼主 | 2020-2-9 13:22 | 显示全部楼层
21635e3f96fd53425.png

使用特权

评论回复
heisexingqisi| | 2020-2-9 16:15 | 显示全部楼层
publicpeople 发表于 2020-2-9 13:18
关键是我打开发送中断使能,当收到发送保持寄存器空中断标志THER_IF时,总是进入中断函数。
按照这个意思 ...

所以不用的时候关闭中断功能就行了。

使用特权

评论回复
publicpeople|  楼主 | 2020-2-9 21:26 | 显示全部楼层
heisexingqisi 发表于 2020-2-9 16:15
所以不用的时候关闭中断功能就行了。

谢谢帮助!

使用特权

评论回复
jasontu| | 2020-2-11 08:48 | 显示全部楼层
TRE_IF,指串口FIFO為空時,TRE_IF中斷會發生。
寫新的值入內UART FIFO 即清TRE_IF.

比較實際的應用例子,看USB VCOM那包。

使用特权

评论回复
643757107| | 2020-2-11 09:48 | 显示全部楼层
嗯,不需要的时候直接关闭这个中断跟清标志是一个效果的。

使用特权

评论回复
jiekou001| | 2020-2-12 20:21 | 显示全部楼层
好方法,不用就关了。

使用特权

评论回复
m564522634| | 2020-2-17 14:48 | 显示全部楼层
读取 清楚  

使用特权

评论回复
598330983| | 2020-2-17 18:29 | 显示全部楼层
是读取清除还是发送清除。。

使用特权

评论回复
598330983| | 2020-2-17 18:44 | 显示全部楼层
891455e4a6e9563368.png
新塘系列的好像都一样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

261

帖子

2

粉丝