久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4326|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32 ADC的單次采樣與電壓換算(基于HAL庫(kù)CubeMX與KEIL協(xié)調(diào)開發(fā))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
在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)貼出。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:898445 發(fā)表于 2021-7-22 23:23 | 只看該作者
想請(qǐng)問下,為什么轉(zhuǎn)換那邊是3300*value值而不是3.3(V)乘以value值呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本小电影在线 | 久草在线 | 91精品国产91久久综合桃花 | 亚洲人成人一区二区在线观看 | www.久久| 日韩欧美一级精品久久 | 免费 视频 1级 | 日韩综合在线播放 | 亚洲午夜精品一区二区三区 | 国产精品成人在线播放 | 国产国语精品 | 自拍偷拍第一页 | 亚洲精品天堂 | 色资源在线 | 精品日韩一区二区 | 久久99精品久久久 | 欧美精品一区二区三区蜜桃视频 | 亚洲国产成人精品在线 | 亚洲+变态+欧美+另类+精品 | 91高清在线视频 | 亚洲第一视频网站 | 涩涩导航 | 国产精品美女一区二区三区 | 91欧美精品成人综合在线观看 | 亚洲国产第一页 | 男人天堂网址 | 久久久久国产 | 91极品视频 | 在线观看黄色电影 | 国产成人网 | 九九九久久国产免费 | 欧美日韩专区 | 中文字幕免费 | 亚洲欧美中文日韩在线v日本 | 国产成人精品久久二区二区91 | 羞羞视频免费观看入口 | 国产日韩免费视频 | 国产成人综合网 | 一区二区视频 | 欧美一区二区在线观看 | 九九九久久国产免费 |