usart串口(usart)

2023-07-04 04:47:02 生活饮食 0阅读 回答者:admin

大家好,小东方来为大家解答以上的问题。usart串口,usart这个很多人还不知道,现在让我们一起来看看吧!

1、实际上两个函数实现的功能是一样的,都是清除相对应的标志位,只是标志位和中断位含义不一样,是标志位但是不一定会产生中断。

2、例如:#define ADC_IT_EOC ((uint16_t)0x0220)#define ADC_IT_AWD ((uint16_t)0x0140)#define ADC_IT_JEOC ((uint16_t)0x0480)这是中断位,可以产生中断#define ADC_FLAG_AWD ((uint8_t)0x01)#define ADC_FLAG_EOC ((uint8_t)0x02)#define ADC_FLAG_JEOC ((uint8_t)0x04)#define ADC_FLAG_JSTRT ((uint8_t)0x08)#define ADC_FLAG_STRT ((uint8_t)0x10)这是标志位,有的标志位不能产生中断标志位在程序中可以作为判定条件,支持程序的运行,中断则是跳转到中断函数执行。

3、两个函数实现的功能是一样的,在中断程序中可以用两个中的任一个。

4、我想区分两个函数是为了更清晰吧。

5、还有#define ADC_IT_EOC ((uint16_t)0x0220)#define ADC_FLAG_EOC ((uint8_t)0x02)这两个数值不同是因为标志位只是为了清除标志位而设的,而中断位设置成这个值是因为在其他函数中这一位还有其他用途。

6、而且还要注意:void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG){ /* Check the parameters */ assert_param(IS_ADC_ALL_PERIPH(ADCx)); assert_param(IS_ADC_CLEAR_FLAG(ADC_FLAG)); /* Clear the selected ADC flags */ ADCx->SR = ~(uint32_t)ADC_FLAG;} 这一步 ADCx->SR = ~(uint32_t)ADC_FLAG;似乎应该是 ADCx->SR &= ~(uint32_t)ADC_FLAG;其实状态位只能有硬件置位,软件只能读和清零,所以这样写也是正确的。

7、OK,问题总是越辩越清晰的。

本文到此分享完毕,希望对大家有所帮助。

免责声明:本文来源网友投稿及网络整合仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。投诉邮箱:1765130767@qq.com。

本文地址:https://www.lnsss.com/shenghuo/yinshi/741954.html