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

OPA2626高速、高精度、低失真、16位和18位模數(shù)轉換器(ADC)驅動器數(shù)據(jù)表

評論