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