[技术问答]

URAT进入中断后标志的处理

[复制链接]
1149|17
手机看帖
扫描二维码
随时随地手机跟帖
eyu66|  楼主 | 2019-10-16 13:43 | 显示全部楼层 |阅读模式
请问一下M451系列进入UART中断后,要像C51那样手动清除中断标志吗?

使用特权

评论回复
tianxj01| | 2019-10-16 15:18 | 显示全部楼层
M451系列UART中断有很多种,包括接受、发送、错误等10种中断。
官方技术参考文档很明确的写着:
每个UART控制器支持10种类型的中断,包括:
  达到接收阈值水平的中断(RDAINT)
  发送FIFO空中断(THERINT)
  Line状态中断(校验错误,帧错误,间隔错误)(RLSINT)
  MODEM状态中断(MODEMINT)
  接收缓冲区定时溢出中断(RXTOINT)
  缓冲区错误中断(BUFERRINT)
  LIN总线中断(LININT)
  nCTS唤醒中断(CTSWKIF)
  数据唤醒中断(DATWKIF)
  自动波特率中断(ABRIF)
下表描述了中断源和中断标志。当中断使能且有中断标志时就会产生中断。用户必须在中断后清中
断标志。

使用特权

评论回复
eyu66|  楼主 | 2019-10-16 16:57 | 显示全部楼层
tianxj01 发表于 2019-10-16 15:18
M451系列UART中断有很多种,包括接受、发送、错误等10种中断。
官方技术参考文档很明确的写着:
每个UART控 ...

看过了文档,UART相关的中断标志都是只读的,而且例程里也没看到有清标志动作,所以有点疑惑了
中断M451.png

使用特权

评论回复
tianxj01| | 2019-10-16 17:16 | 显示全部楼层
eyu66 发表于 2019-10-16 16:57
看过了文档,UART相关的中断标志都是只读的,而且例程里也没看到有清标志动作,所以有点疑惑了
...

其实也就是这2个中断,是不能直接操作中断标志的。
RDAIF 需要读 UART_DAT来清除中断标记,而不能直接清除标记本身,同样的THREIF 中断标志必须用写 UART_DAT来清除中断标志。所以这里标注只读应该是很准确的。
其他几种中断,则都是直接写1到标志位就可以清除了。
其实,采用类似中断标志模式目前基本上在UART中断非常流行,因为接受中断,无非就是去读数据,而发送中断无非就是等数据发送完成,好开启另一次发送。所以这样做,即让我们不需要特别的中断标志清除动作,只要写入或者读BUF,就完成了一次中断标记清除。但你不去执行读取或者写入动作,中断标记确实不会自己清除掉。

使用特权

评论回复
xixi2017| | 2019-10-16 21:56 | 显示全部楼层
188175da721a664675.png

使用特权

评论回复
xixi2017| | 2019-10-16 21:57 | 显示全部楼层
去看看相关头文件,需要

使用特权

评论回复
xixi2017| | 2019-10-16 21:59 | 显示全部楼层
竟然没有给中断的例子,可惜了。

使用特权

评论回复
xixi2017| | 2019-10-16 22:01 | 显示全部楼层
13725da722a1daaca.png
找到例子了。

使用特权

评论回复
xixi2017| | 2019-10-16 22:01 | 显示全部楼层
串口唤醒那个里面有。

使用特权

评论回复
zhuomuniao110| | 2019-10-16 22:33 | 显示全部楼层
根据楼上的介绍肯定需要。

使用特权

评论回复
幸福小强| | 2019-10-16 23:27 | 显示全部楼层
必须的。
好像STM32的HAL库是不用,因为封装到回调函数里面了。

使用特权

评论回复
eyu66|  楼主 | 2019-10-17 08:12 | 显示全部楼层

看到了,谢谢!
之前注意力一直在寄存器的操作方式,忽略了库函数~

使用特权

评论回复
gaoyang9992006| | 2019-10-17 08:46 | 显示全部楼层
库函数现在做的非常好了,而且新唐的多个系列共有的外设的库函数都是一致的,学会一个使用,其他系列都会用。

使用特权

评论回复
gaoyang9992006| | 2019-10-17 08:47 | 显示全部楼层
比如串口上M051和M451那都是一致的,你如果找不到M4系列的例子可以找M0系列的。一样的库。

使用特权

评论回复
玛尼玛尼哄| | 2019-10-17 08:50 | 显示全部楼层
312545da7bad481654.png
STM32的是库函数帮着实现了,而且格式化的实现,需要用户自己填写回调函数。

使用特权

评论回复
玛尼玛尼哄| | 2019-10-17 08:51 | 显示全部楼层
STM32的是可以完全自主控制的,因为并不是所有的应用需要清理这个标志,或者什么时候清理,都可以自主控制。

使用特权

评论回复
wanduzi| | 2019-10-17 17:27 | 显示全部楼层
楼上所问非所答,还打广告,举报。

使用特权

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

本版积分规则

38

主题

233

帖子

2

粉丝