首页 生活 > 正文

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、两个函数实现的功能是一样的,在中断程序中可以用两个中的任一个。

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,问题总是越辩越清晰的。

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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。