一、前言
您在使用新款芯片和新的開發(fā)環(huán)境進(jìn)行開發(fā)的過程中是否會遇到以下問題:如何快速建工程?如何快速上手編程?不了解芯片功能?實(shí)現(xiàn)功能和預(yù)期不符?
本開發(fā)指南將手把手幫工程師們解決以上問題,了解芯片的各個模塊,對照手冊熟悉各個模塊的寄存器配置。同時,分享一些常見的錯誤用法,避免您走一些彎路,從而提高開發(fā)效率。
二、程序描述
示例程序是以SD93F115-JBS芯片編寫,包含了按鍵中斷、RTC中斷、SDADC、SARADC、RTC、DAC、低壓檢測、LCD顯示、休眠測試等多個基礎(chǔ)功能綜合的一個程序,配合按鍵中斷進(jìn)入不同的子程序進(jìn)行演示。
附件SD93F115-JBS_TEST是已經(jīng)編寫好的示例程序,其主體思路:先對芯片進(jìn)行系統(tǒng)初始化,再對需要使用的功能進(jìn)行配置,然后進(jìn)入主循環(huán)通過按鍵中斷選擇置起相應(yīng)的測試標(biāo)志位,進(jìn)入相應(yīng)的測試項實(shí)現(xiàn)功能演示。
最后按照《軟件篇》的方法將程序下載至芯片中。
三、main函數(shù)
main函數(shù)的整體框架,如圖3-1:
圖3-1 main函數(shù)
如上圖所示,main函數(shù)首先運(yùn)行的是Sys_MyInit()系統(tǒng)初始化,因?yàn)樾酒想姾蟮哪J(rèn)狀態(tài)下基本只有IHRC和ILRC在工作,大部分的外設(shè)都需要打開對應(yīng)時鐘后,才可以重新配置相應(yīng)模塊,后期自行開發(fā)時有需要用到的外設(shè)可參照應(yīng)用手冊13.7節(jié)--時鐘與復(fù)位寄存器優(yōu)先開啟時鐘。
由于IHRC是校準(zhǔn)過的,只需從RCC_IHRC_CLBR寄存器將校準(zhǔn)數(shù)據(jù)存入RCC_IHRC_CR寄存器即可完成校準(zhǔn)動作,模擬部分電源BG、ACM和AVDDR默認(rèn)上電是關(guān)閉的,后續(xù)也會用到,直接調(diào)用庫函數(shù)打開,完成對芯片的初步配置。如下圖3-2所示:
圖3-2系統(tǒng)初始化函數(shù)
系統(tǒng)初始化之后,進(jìn)行FLAG_Init()標(biāo)志位初始化,該函數(shù)里的標(biāo)志位是自定義的一些變量,在后續(xù)程序執(zhí)行時會使用到,而在初始運(yùn)行函數(shù)時,這些變量可能是隨機(jī)數(shù)據(jù),需要進(jìn)行變量清零。如下圖3-3所示:
圖3-3自定義標(biāo)志位初始化函數(shù)
自定義標(biāo)志位初始化之后,為保證程序運(yùn)行正常,在編寫其他函數(shù)前,需要先編寫一個IWDG_Init()獨(dú)立看門狗初始化函數(shù)(脫離主函數(shù)單獨(dú)計數(shù)的一個寄存器,屬于硬件范疇),它能在程序跑飛的情況下,復(fù)位芯片,使程序重新開始運(yùn)行。獨(dú)立看門狗結(jié)構(gòu)圖如下圖3-4:
圖3-4獨(dú)立看門狗結(jié)構(gòu)圖
從結(jié)構(gòu)上看,獨(dú)立看門狗是以低頻時鐘ILRC的分頻為時鐘源,當(dāng)WDT_COUNTER計數(shù)時間超過設(shè)置值時溢出,芯片便會產(chǎn)生中斷或復(fù)位,注意一旦獨(dú)立看門狗使能后軟件就無法關(guān)閉IWDG和ILRC,除非產(chǎn)生復(fù)位。
獨(dú)立看門狗初始化函數(shù)如圖3-5所示:
圖3-5獨(dú)立看門狗初始化函數(shù)
這里直接調(diào)用庫函數(shù),將獨(dú)立看門狗預(yù)分頻器設(shè)置8分頻,溢出時間設(shè)置為23040,最后開啟看門狗選擇正常模式工作,待機(jī)模式不工作,在此配置下計算的復(fù)位時間t=5.76秒。
因?yàn)殚_啟了獨(dú)立看門狗,但又不希望程序在正常運(yùn)行時發(fā)生復(fù)位,所以需要在正常運(yùn)行的程序期間加入‘喂狗’操作,防止芯片在正常情況下復(fù)位,尤其是在執(zhí)行循環(huán)過程中是需要特別注意進(jìn)行‘喂狗’操作的,建議溢出時間不要設(shè)的太小。
獨(dú)立看門狗初始化后,還對按鍵中斷、PWM、SDADC、SARADC、UART、RTC和LCD顯示等功能也進(jìn)行了初始化,在后面的章節(jié)會詳細(xì)介紹。
為了更直觀的看到程序是否正常運(yùn)行,先在LCD屏上顯示‘123456’,然后用一個GPIO做數(shù)字輸出來驅(qū)動外部LED燈進(jìn)行閃爍,GPIO初始化如下圖3-6:
圖3-6 GPIO初始化函數(shù)
首先打開GPIO外設(shè)時鐘使能,將P83口設(shè)置為數(shù)字輸出,配置為大電流模式(最大電流可以達(dá)到12mA),為避免其他GPIO引腳懸空造成未知影響,將所有沒有使用的GPIO全部配置為輸入上拉模式。
宏定義了P83引腳的輸出,使得控制LED燈的狀態(tài)更清楚,然后在main函數(shù)的while循環(huán)里每隔50ms把P83狀態(tài)翻轉(zhuǎn),即可控制LED燈的亮滅,最終程序運(yùn)行PCB板的初步現(xiàn)象就是LCD顯示‘123456’,LED燈不停閃爍,等待按鍵中斷的來臨。
圖3-7 P83引腳輸出宏定義
四、總結(jié):
本文介紹了Main函數(shù)的整體運(yùn)行流程,重點(diǎn)在于編程時要優(yōu)先開啟需要使用的外設(shè)時鐘,再配合庫函數(shù)的使用可以有效減少開發(fā)過程中遇到的問題,芯片的其他功能將會在后續(xù)章節(jié)逐一分享。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17985瀏覽量
367321 -
adc
+關(guān)注
關(guān)注
99文章
6710瀏覽量
549310 -
soc
+關(guān)注
關(guān)注
38文章
4395瀏覽量
222860
發(fā)布評論請先 登錄
笙泉高精度24位ADC (MAD2402)新上市,賦能精準(zhǔn)量測
Ci24R02—高度集成的低功耗SOC芯片
如何測試高精度ADC的線性度?
如何使用運(yùn)算放大器來驅(qū)動高精度 ADC
ADC對于10MHz高精度的采樣信號,應(yīng)該通過什么來構(gòu)建?
通過使用增強(qiáng)型雙位Δ∑技術(shù)來實(shí)現(xiàn)其高精度特點(diǎn)的ADC芯片
如何校準(zhǔn)adc以提高精度
納芯微發(fā)布低功耗高精度Δ-Σ型ADC
音頻信號采集為什么要用專用的CODEC來實(shí)現(xiàn),普通高精度高采樣率ADC可以嗎?
過采樣提高12位ADC的精度
過采樣提高12位ADC精度在STM32主控上的實(shí)現(xiàn)(附電路及代碼)
24位高精度ADC ME9603產(chǎn)品特點(diǎn)

評論