|
在STM32F103ZET6核心板進(jìn)行STM32應(yīng)用開發(fā),完成以下功能:
①將ADC_IN0設(shè)置為12位ADC,右對(duì)齊,啟用中斷。
②分別用查詢和中斷兩種方式,每個(gè)0.5S采樣一個(gè)ADC數(shù)據(jù)。
③將每次讀取到的ADC采樣值轉(zhuǎn)換為對(duì)應(yīng)的電壓值,發(fā)送到上位機(jī)。
④LED1作為采樣指示燈,在ADC轉(zhuǎn)換過程中亮,其余時(shí)間滅。
初接觸編程的小白,兩年電子生涯給我積累了雄厚的硬件基礎(chǔ),接觸編程到今年三月整整一年,51單片機(jī)到STM32,當(dāng)然肯定不是精通,51只是達(dá)到會(huì)用的程度,主要是通過51熟悉底層編程的思路,因?yàn)榈搅?2接觸底層的機(jī)會(huì)越來(lái)越少原因是太復(fù)雜有難度,現(xiàn)階段比賽需要沒有太多時(shí)間詳細(xì)的去學(xué)習(xí),所以沒接觸過32寄存器,普通的庫(kù)函數(shù)開發(fā)也沒接觸過直接上的HAL庫(kù),想要在這個(gè)行業(yè)有點(diǎn)成績(jī),忙完了比賽肯定是欠下的都需要補(bǔ)回來(lái)的,說(shuō)實(shí)話一開始的時(shí)候挺絕望的,但是通過學(xué)習(xí)發(fā)現(xiàn)也不是個(gè)學(xué)不會(huì)的事,追夢(mèng)人共同加油!
ADC這個(gè)學(xué)過模電的應(yīng)該都對(duì)他特別熟悉,他真的是無(wú)處不在,嗯,關(guān)于什么是ADC,幾個(gè)重要的技術(shù)指標(biāo),我就不介紹硬件方面的知識(shí)了,這個(gè)是屬于常識(shí)性的東西必須得掌握的,不知道的度娘補(bǔ)課了,從STM32的資源說(shuō)起。
我用的是STM32F103ZET6主控,它里面一共有3個(gè)12位逐次逼近型的ADC,ADC1 ADC2 ADC3,有18個(gè)測(cè)量通道,16+2,可測(cè)量16個(gè)外部個(gè)2個(gè)內(nèi)部信號(hào)(內(nèi)部溫度 內(nèi)部電壓),這個(gè)2只能接ADC1,然后AD轉(zhuǎn)換可以以單次,連續(xù),掃描和間接形式執(zhí)行,按照組織來(lái)分又分為注入組和規(guī)則組,結(jié)果存儲(chǔ)形式有左對(duì)齊和右對(duì)齊(建議),這些基本的東西反正我是記住,因?yàn)槲矣玫倪@個(gè)主控所以我記得比較明白,其他的我沒用過的我也不知道但是每學(xué)習(xí)一個(gè)都需要對(duì)你這個(gè)主控進(jìn)行把握正所謂知己知彼百戰(zhàn)百勝,不具體展開說(shuō)反正我感覺東西不少,多用就逐漸記住了。
直接說(shuō)STM32CubeMX關(guān)于ADC對(duì)配置,因?yàn)榈讓拥臇|西坦白講我說(shuō)不明白,現(xiàn)在只是達(dá)到對(duì)外設(shè)會(huì)用的程度,我們進(jìn)行AD轉(zhuǎn)換肯定是要得到一個(gè)結(jié)果,HAL庫(kù)中進(jìn)行AD轉(zhuǎn)換結(jié)果讀取的方式有3種,我先介紹2種坦白講第三種DMA多線程同時(shí)采集的我還沒會(huì),等會(huì)了再補(bǔ)上。
1堵塞式AD轉(zhuǎn)換(查詢)
uint16_t ADC_Value = 0;
HAL_ADC_Start(&hadc);//啟動(dòng)哪一個(gè)AD轉(zhuǎn)換,通過這個(gè)函數(shù)告訴它
if(HAL_OK == HAL_ADC_PollForConversion(&handc,10))//轉(zhuǎn)換過程函數(shù)&handc轉(zhuǎn)換的AD,10為轉(zhuǎn)換超時(shí)時(shí)間
{
ADC0_Value = HAL_ADC_GetValue(&handc);//轉(zhuǎn)換成功后就讀取這個(gè)AD結(jié)果
}
2非阻塞式A/D轉(zhuǎn)換(中斷)
uint16_t ADC_Value = 0;
HAL_ADC_Start_IT(&hadc);//通過帶有中斷的函數(shù)啟動(dòng)AD轉(zhuǎn)換
void HAL_ADC_ConvCPltCallback(ADC_HandleTypeDef* hadc1);//進(jìn)入中斷回調(diào)函數(shù),讀取AD轉(zhuǎn)換值
{
ADC_Value = HAL_ADC_GetValue(&handc);
}
然后就可以來(lái)做開頭那個(gè)小題目了,開頭那個(gè)小題目還用到串口,這部分在這不介紹不會(huì)的先度娘吧有時(shí)間我在出一個(gè)串口的。
HAL庫(kù)配置使用CubeMX這個(gè)軟件具體配置我想偷個(gè)懶不想粘圖就是找到ADC1>INT0然后啟用NVIC開啟中斷,找到UART1->異步通訊->波特率9600也可以115200(和上位機(jī)同步)再打開LED的GPIO配置為OUT,初始電平H因?yàn)槲矣布脑颍_啟外部時(shí)鐘,配置時(shí)鐘樹,生成代碼,然后在KEIL中進(jìn)行個(gè)性化開發(fā)。
然后核心代碼已經(jīng)貼出。
捕獲.PNG (35.11 KB, 下載次數(shù): 92)
下載附件
2021-7-19 23:36 上傳
|
評(píng)分
-
查看全部評(píng)分
|