请问USART_ClearFlag和USART_ClearITPendingBit区别?

element1989 2013-03-05 04:30:32
功能都是一样的,为什么要有2个?
这到底是为什么?
...全文
1982 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjk2752 2013-03-15
  • 打赏
  • 举报
回复
如果用查询方式收发串口数据的话,没有开中断,你就不能用USART_ClearITPendingBit吧,这两我觉得前面的是针对串口本身的,后面的是针对中断的。
element1989 2013-03-13
  • 打赏
  • 举报
回复
引用 9 楼 gubaotong 的回复:
实际没有区别,你去看看程序 void USART_ClearFlag(USART_TypeDef* USARTx, u16 USART_FLAG) { /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_CLEAR_FL……
所以我想知道,他们为什么要写2个一样的函数,名字不一样的原因。
数通达人 2013-03-10
  • 打赏
  • 举报
回复
实际没有区别,你去看看程序 void USART_ClearFlag(USART_TypeDef* USARTx, u16 USART_FLAG) { /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_CLEAR_FLAG(USART_FLAG)); assert_param(IS_USART_PERIPH_FLAG(USARTx, USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */ USARTx->SR = (u16)~USART_FLAG; } void USART_ClearITPendingBit(USART_TypeDef* USARTx, u16 USART_IT) { u16 bitpos = 0x00, itmask = 0x00; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_CLEAR_IT(USART_IT)); assert_param(IS_USART_PERIPH_IT(USARTx, USART_IT)); /* The CTS interrupt is not available for UART4 and UART5 */ bitpos = USART_IT >> 0x08; itmask = (u16)((u16)0x01 << bitpos); USARTx->SR = (u16)~itmask; } 都是对SR进行操作的。 在DMA中也是这样 DMA_ClearFlag(u32 DMA_FLAG)与DMA_ClearITPendingBit(u32_DMA_IT)也是一样的 在DMA中都是对DMA_IFCR(DMA interrupt flag clear register)中相应通道置1来清除标志位的。
dikun998 2013-03-10
  • 打赏
  • 举报
回复
好东西,学习了。
element1989 2013-03-07
  • 打赏
  • 举报
回复
清楚标志,和清楚中断预处理 ,有什么区别, 求解释
yangweiping2011 2013-03-07
  • 打赏
  • 举报
回复
最近也在学stm32,一头雾水,学习了,
cptang 2013-03-07
  • 打赏
  • 举报
回复
一个是清除标志,判断中断是否处理完。 一个是清除中断标志位,根据标志位来执行相应的中断函数。 一个是在入口(是否触发某个中断),一个是在出口(是否完成某个中断)
woshi_ziyu 2013-03-07
  • 打赏
  • 举报
回复
“中断处理模块负责处理中断,包括Timer 中断、I2C 中断、SPI 中断和UART 中断。中断预处理任务负责读取定时器标志位及I2C、SPI 和UART 接收缓冲区,通过解析标志位和缓冲区内容,生成待处理事件,并将它们分门别类放入相应的待处理事件消息队列。”
element1989 2013-03-06
  • 打赏
  • 举报
回复
为什么会要2个功能一样,名字不同的函数? 谁能解释出来啊
woshi_ziyu 2013-03-06
  • 打赏
  • 举报
回复
一个是清除标志,一个是清除中断预处理位 里面函数是一样的 可能是为了兼容其他系列 或者为以后升级预留
woshi_ziyu 2013-03-06
  • 打赏
  • 举报
回复
引用 2 楼 element1989 的回复:
为什么会要2个功能一样,名字不同的函数? 谁能解释出来啊
功能不一样 一个是清除标志,一个是清除中断预处理位 只是对于这一系列实现方法相同而已

27,508

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧