來我們看看wwdg.c文件內容:
u8 WWDG_CNT=0X7F;
//初始化窗口看門狗
//tr :T[6:0],計數器值 wr :W[6:0],窗口值
//fprer:分頻系數(WDGTB),僅最低2 位有效
//Fwwdg=PCLK1/(4096*2^fprer). 一般PCLK1=42Mhz
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
//使能窗口看門狗時鐘
WWDG_CNT=tr&WWDG_CNT; //初始化WWDG_CNT.
WWDG_SetPrescaler(fprer); //設置分頻值
WWDG_SetWindowValue(wr); //設置窗口值
WWDG_SetCounter(WWDG_CNT);//設置計數值
WWDG_Enable(WWDG_CNT); //開啟看門狗
NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn; //窗口看門狗中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //搶占優先級為2
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //響應優先級為3
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能窗口看門狗
NVIC_Init(&NVIC_InitStructure);
WWDG_ClearFlag();//清除提前喚醒中斷標志位
WWDG_EnableIT();//開啟提前喚醒中斷
}
//窗口看門狗中斷服務程序
void WWDG_IRQHandler(void)
{
WWDG_SetCounter (WWDG_CNT); //重設窗口看門狗值
WWDG_ClearFlag();//清除提前喚醒中斷標志位
LED1=!LED1;
}
wwdg.c文件一共包含兩個函數。第一個函數void WWDG_Init(u8 tr,u8 wr,u8 fprer)用來設置 WWDG的初始化值。包括看門狗計數器的值和看門狗比較值等。該函數就是按照我們上面5 個步驟的思路設計出來的代碼。注意到這里有個全局變量WWDG_CNT,該變量用來保存最初設置WWDG_CR計數器的值。在后續的中斷服務函數里面,就又通過WWDG_SetCounter函數把該數值放回到WWDG_CR上。
最后在中斷服務函數里面,先重設窗口看門狗的計數器值,然后清除提前喚醒中斷標志。最后對LED1(DS1)取反,來監測中斷服務函數的執行狀況。
wwdg.h 頭文件內容比較簡單,這里我們就不做過多講解。
在完成了以上部分之后,我們就回到主函數,代碼如下:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
delay_init(168); //初始化延時函數
LED_Init(); //初始化 LED 端口
KEY_Init(); //初始化按鍵
LED0=0; //點亮 LED0
delay_ms(300);
WWDG_Init(0x7F,0X5F,WWDG_Prescaler_8);
//計數器值為 7f,窗口寄存器為5f,分頻數為8
while(1)
{
LED0=1; //熄滅 LED 燈
}
}
該函數通過 LED0(DS0)來指示是否正在初始化。而 LED1(DS1)用來指示是否發生了中斷。我們先讓 LED0亮 300ms,然后關閉以用于判斷是否有復位發生了。在初始化 WWDG 之后,我們回到死循環,關閉LED1,并等待看門狗中斷的觸發/復位。
在編譯完成之后,我們就可以下載這個程序到探索者 STM32F4 開發板上,看看結果是不是和我們設計的一樣。
上一篇:STM32操作訪問內部Flash
下一篇:STM32f4獨立看門狗實驗代碼
推薦閱讀
史海拾趣
ALD(Advanced Linear Devices)是一家專注于模擬半導體器件和電源解決方案的公司。以下是關于ALD公司發展的5個相關故事:
公司成立與創始人: ALD公司成立于1985年,總部位于美國加州的米爾皮塔斯市。該公司由俄羅斯裔工程師及企業家Vladimir Larkhov先生創立。Larkhov先生在半導體領域有著豐富的經驗和深厚的技術底蘊,他創立ALD旨在為市場提供高品質、高性能的模擬集成電路和解決方案。
技術創新與專利: ALD公司以其在模擬半導體領域的技術創新而聞名。該公司擁有眾多的專利,涵蓋了多個關鍵技術領域,包括功率管理、電源管理、精密電壓參考和模擬信號處理等。這些專利為ALD提供了技術壁壘,保護了其在市場上的地位。
產品線與市場應用: ALD公司的產品涵蓋了模擬集成電路(ICs)、功率管理芯片、電源解決方案等領域。其產品被廣泛應用于工業控制、醫療設備、汽車電子、通信設備、消費類電子產品等多個市場領域。ALD產品的高性能、高可靠性得到了客戶的認可和信賴。
全球業務拓展: 隨著全球市場的不斷擴大,ALD公司不斷加大對海外市場的開拓力度。除了在美國設立總部和研發中心外,ALD還在亞洲、歐洲等地設立了銷售辦事處和合作伙伴,以便更好地服務全球客戶。
不斷創新與發展: ALD公司一直致力于不斷創新和發展,不斷推出具有競爭力的新產品和解決方案,以滿足客戶不斷變化的需求。公司注重技術研發和人才培養,擁有一支技術過硬、富有創新精神的團隊,為公司的持續發展提供了強有力的支持。
這些故事展現了ALD公司在技術創新、產品應用、全球業務拓展和持續發展等方面的發展歷程和成就。
近年來,DYMO公司越來越注重環保和可持續發展。公司采用環保材料制造產品,并推廣循環使用和回收計劃。此外,DYMO公司還積極參與各種環保活動,致力于減少生產過程中的碳排放和廢棄物排放。這些舉措不僅提高了DYMO公司的社會形象,也為其未來的發展奠定了更加堅實的基礎。
Barry Industries Inc深知品質是企業生存和發展的關鍵。因此,公司始終將品質管理放在首位,從原材料采購到生產流程控制,再到產品出廠檢驗,每一個環節都嚴格把控品質。同時,公司還注重品牌建設,通過提升產品形象和服務水平,逐漸樹立了良好的品牌形象。
AMERICASEMI深知產品質量對于企業發展的重要性。因此,公司建立了嚴格的質量管理體系,從原材料采購到生產制造的每一個環節都進行嚴格把控。同時,AMERICASEMI還注重品牌建設,通過參加國際電子展會、發布技術論文等方式提升品牌知名度和影響力。這些努力使得AMERICASEMI在半導體行業中樹立了良好的口碑和形象。
隨著國內市場的逐步飽和,Crane Connectors公司開始將目光投向國際市場。公司制定了詳細的國際化戰略,包括設立海外分支機構、拓展銷售渠道、加強與國際知名企業的合作等。通過不斷努力,公司的產品逐漸打入歐美、東南亞等地區的電子市場,實現了銷售收入的快速增長。國際化戰略的成功實施,不僅提升了公司的國際影響力,也為公司的長遠發展奠定了堅實的基礎。
如題,現在嵌入式基本是和LINUX連接到一起,搞得我們頭大,那作為剛入門的人,是不是我們學習嵌入式,一定要學習LINUX呢?… 查看全部問答∨ |
|
我自己畫了個F2812的最小系統板,晶振用的是25MHZ。 把電路焊好后,上電。用示波器看XCLKOUT的輸出,是6.25MHZ的時鐘信號。板子放了一會,什么也沒做,再上電,用示波器看XCLKOUT的輸出,發現是3.125MHZ的時鐘信號,接下來再測時,一直都是3.125MH ...… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:03 編輯 In-Stat通過對美國消費者進行在線調查后發現,USB毫無疑問是當今家用和辦公PC上最流行、最常用的數字接口界面,而藍牙則在手機領域非常流行。 In-Stat分析師Brian O\'Rourke表示:“在家 ...… 查看全部問答∨ |
1、想方設法使用一個時鐘,進行同步設計。 2、確保信號建立時間無誤。 3、盡量降低電路速度。 4、不要認為使用硬件描述語言是做軟件。時刻保將自己寫的每條語句都能找到成相應的硬件。… 查看全部問答∨ |
|
proteus仿真沒有我想要的元件ADS1211和MAX531,這分別是模數轉換和數模轉換元件,沒有這兩個元件,怎么做才能與keilc程序仿真出實際的效果啊… 查看全部問答∨ |
有誰在VXWORKS下玩過eXtremedb 實時數據庫的? extremedb是首款非常優秀的微秒級內存數據庫,高能和性能都達到了內存數據庫的極限、內核尺寸在100K左右 在各種軟硬件平臺上面能夠達到微秒級的插入、查詢和更新 。感興趣的朋友可以從下載試一下技術交流:QQ:914669793 如需要多平臺詳 ...… 查看全部問答∨ |
PND2442 - 主流手持設備方案—S3C2442-SC32442的相關方案資料 大家好,初來論壇。 發些資料給論壇,有興趣可看看。 因上傳不了。 給一下下載地址啦: s3c2442架構與選型文檔 [/url] 主流手持設備方案—S3C2442-SC32442 [url=http://www.openemb.com/download/PND2442.rar] 如想要其它資料可發EMAIL到 ...… 查看全部問答∨ |
PB5.0,編譯出現錯誤:error C2220: warning treated as error - no object file generated 平臺:PB5.0 小弟做一個內核時候,在build階段出現一個錯誤,具體如下: BUILD: [00:0000000029:PROGC ] Compiling \\WINCE500\\PLATFORM\\855gme\\Src\\Kernel\\Libs\\Kitl\\ directory. BUILD: [01:000 ...… 查看全部問答∨ |