usart usart怎么读


usart usart怎么读

文章插图
大家好,小甜来为大家解答以下的问题 , 关于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、两个函数实现的功能是一样的,在中断程序中可以用两个中的任一个 。
【usart usart怎么读】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,问题总是越辩越清晰的 。
本文分享完毕,希望对大家有所帮助 。

    推荐阅读