您好,今天飛哥來為大家解答以上的問題。usart和uart可以混用嗎,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,問題總是越辯越清晰的。
本文就為大家分享到這里,希望小伙伴們會喜歡。
这里有更多你想看的
|
- 上一篇:熊本士保溫杯官網查詢真偽 熊本土保溫杯官網
- 下一篇:返回列表