hind

STM32库中外设的GetITStatus与GetFlagStatus(本文以USART为例)

0
阅读(8520)

这两个函数出现在各种资料中,很多场合用法差不多,让人感觉这俩函数是差不多的。在困惑中稍微看了下源码,原来它们都操作SR,但GetITStatus还有额外的对几个CR的访问。经过反复单步调试,发现其访问CR就是为了看几个中断源的使能情况,于是恍然大悟,原来这俩函数的区别也就在于是否开启了标志位对应的中断,可以说有些情况下可以互换,而有些情况下就要通过搭配其他操作才能替换,最好根据需要选择配套的函数,比如清中断/标志位。

话说ClearITPendingBit这个函数真是坑人,找了半天没找到相应外设的pending寄存器,最后发现其本质跟ClearFlag是一样的,只是参数定义不同,最后还是操作SR。