【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫獨(dú)立看門狗(IWDG)
??相關(guān)篇《【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫下GPIO點(diǎn)燈示例》
- ??《【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫下EXTI外部中斷》
- ??《【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫蜂鳴器(BEEP)驅(qū)動(dòng)》
- ??《【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫下自動(dòng)喚醒(AWU)》
- ??基于ST STM8S/A標(biāo)準(zhǔn)外設(shè)庫:STSW-STM8069,版本號(hào):
2.3.1
- ??STSW-STM8069官方資源下載地址:
https://www.st.com/zh/embedded-software/stsw-stm8069.html
- ??IAR編譯器版本:
IAR Assembler for STMicroelectronics STM8 3.11.1
- ??STM8S207/208RBT6最小系統(tǒng)板:
https://oshwhub.com/perseverance51/stm8s207rbt6-kai-fa-ban
- ??中斷向量表
??獨(dú)立看門狗(IWDG)
獨(dú)立看門狗模塊可以用于解決處理器因?yàn)橛布蜍浖墓收纤l(fā)生的錯(cuò)誤。它由一個(gè)內(nèi)部的128kHz的LSI阻容振蕩器作為時(shí)鐘源驅(qū)動(dòng),因此即使是主時(shí)鐘失效時(shí)它仍然照常工作。
-
??硬件看門狗功能
如果在IWDG_HW選擇字節(jié)中使能了硬件看門狗的功能,在芯片上電時(shí)看門狗的功能被自動(dòng)開啟,如果軟件不能及時(shí)操作鍵寄存器,則在計(jì)數(shù)器達(dá)到0x00時(shí)產(chǎn)生復(fù)位. -
??OPTION Byte選項(xiàng)字節(jié)
??超時(shí)周期和分頻系數(shù)
- 超時(shí)周期由計(jì)數(shù)器數(shù)值和時(shí)鐘預(yù)分頻器決定,下表列出了它們的數(shù)值。
文章來源:http://www.zghlxwxcb.cn/news/detail-405124.html
??從上表圖可知,超時(shí)周期長短由分頻系數(shù)決定,分頻系數(shù)越大,那么超時(shí)周期就越長,最多256分頻,對(duì)應(yīng)的時(shí)間周期是1.02S文章來源地址http://www.zghlxwxcb.cn/news/detail-405124.html
??獨(dú)立看門狗配置函數(shù)
/*******************************************************************************
**函數(shù)名稱:void IWDG_Init()
**功能描述:初始化獨(dú)立看門狗
**入口參數(shù):無
**輸出:無
看門狗時(shí)鐘源:IWDG LSI = 128KHz/2 =64KHz
f = 64KHZ / 256 = 250Hz;T(周期)= 1/f =0.004S
- 重裝載值:0xfa ->0.004S * 250 = 1S(秒)
- 最大重裝載值 0xff ->0.004S * 252 = 1.02S(秒)
- 重裝載值決定喂狗頻率
*******************************************************************************/
void IWDG_Init( void )
{
IWDG->KR = 0xCC;//啟動(dòng)IWDG
IWDG->KR = 0x55;//解除PR以及RLR的寫保護(hù)
IWDG->RLR = 0xff;//看門狗計(jì)數(shù)器重裝載數(shù)值:250,max=0xff(255)
IWDG->PR = 0x06;//分頻系數(shù)256,最長超時(shí)時(shí)間:1.024S
IWDG->KR = 0xaa;//刷新IWDG
//先寫0XCC,后寫0X55,再寫鍵值,
// IWDG_Enable();//啟動(dòng)IWDG
// IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable );//解除PR以及RLR的寫保護(hù)
// IWDG_SetReload( 0xff ); //重載寄存器寫入255
// IWDG_SetPrescaler( IWDG_Prescaler_256 ); //64KHZ / 256 = 0.004S
// IWDG_ReloadCounter();//刷新IWDG
}
??主程序代碼
- ??在沒有配置
OPTION Byte
選項(xiàng)字節(jié)的情況下,默認(rèn)是軟件開啟方式。如果需要硬件開啟的話需要配置OPTION Byte
選項(xiàng)字節(jié),并且在后面的燒寫程序當(dāng)中都要在看門狗復(fù)位前進(jìn)行喂狗,否則超時(shí)就會(huì)復(fù)位,推薦還是軟件開啟方式。
/**************************************************************************************
實(shí)驗(yàn)現(xiàn)象: 開始LED1指示燈亮一秒后熄滅,在循環(huán)內(nèi)不斷喂狗,如果未在規(guī)定時(shí)間喂狗將產(chǎn)生復(fù)位,復(fù)位后程序
從頭開始執(zhí)行,即LED1指示燈亮一秒后熄滅。沒有被復(fù)位下,LED2正常1s頻率閃爍。
接線說明: 1,STM8S單片機(jī)-->LED1
PC7-->LED1
PC6-->LED2
注意事項(xiàng):1、點(diǎn)擊“Download active application”按鈕,程序下載完成后,即可運(yùn)行程序。
***************************************************************************************/
#include "stm8s.h" /* 添加庫函數(shù)頭文件 */
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "time.h"
#include "iwdg.h"
#include <stdio.h>
/* 主函數(shù) */
int main( void )
{
disableInterrupts(); //關(guān)閉系統(tǒng)中斷
//內(nèi)部時(shí)鐘為1分頻 = 16Mhz
CLK_SYSCLKConfig( CLK_PRESCALER_HSIDIV1 );
USART1_Init( 9600 ); //初始化USART1 , 并設(shè)置波特率為9600
printf( "Hello World \r\n" );
LED_Init();
TIM2_Init( TIM2_PRESCALER_1, 16000 );
LED1_ON();
TIM2_DelayMs( 1000 );
LED1_OFF();
/* Clear IWDGF Flag */
// RST_ClearFlag( RST_FLAG_IWDGF );
IWDG_Init();//1.024秒后則會(huì)產(chǎn)生復(fù)位
enableInterrupts(); //使能系統(tǒng)中斷
while( 1 )
{
/* Reload IWDG counter */
IWDG->KR = 0xAA;//喂狗防止系統(tǒng)復(fù)位
// IWDG_ReloadCounter(); //喂狗防止系統(tǒng)復(fù)位
LED2_TOGGLE;
delay_ms( 978 ); //延時(shí)978ms秒,對(duì)獨(dú)立看門狗進(jìn)行喂狗,防止系統(tǒng)復(fù)位
// TIM2_DelayMs( 965 );//實(shí)際延時(shí)時(shí)間:980ms
}
}
//是一個(gè)宏定義;在固件庫中,它的作用就是檢測傳遞給函數(shù)的參數(shù)是否是有效的參數(shù)
void assert_failed( u8* file, u32 line )
{
while ( 1 )
{
}
}
??工程源碼
- ??IAR對(duì)中文路徑不友好,不要將工程解壓在帶有中文字符路徑的文件夾內(nèi)直接打開工程編譯,這樣會(huì)導(dǎo)致IAR內(nèi)部檢索文件路徑將消耗大量CPU資源。
鏈接: https://pan.baidu.com/s/1XcTRAnKCM48k1F0o8G6lBw
提取碼: hv4u
到了這里,關(guān)于【IAR工程】STM8S208RB基于ST標(biāo)準(zhǔn)庫獨(dú)立看門狗(IWDG)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!