- #include "SmartM_M0.h"
- /****************************************
- *函数名称:main
- *输 入:无
- *输 出:无
- *功 能:函数主体
- ******************************************/
- VOID BODInit(UINT32 unVoltage)
- {
- PROTECT_REG
- (
- switch(unVoltage)
- {
- case 4500:BODCR|=3<<1;
- break;
- case 3800:BODCR|=2<<1;
- break;
- case 2700:BODCR|=1<<1;
- break;
- case 2200:BODCR|=0<<1;
- break;
- default:break;
- }
- BODCR|=1<<4;
- BODCR|=0x01;
- )
- NMI_SEL=0x01;
- NVIC_ISER |= BOD_OUT_INT;
- }
- /****************************************
- *函数名称:BODDeinit
- *输 入:无
- *输 出:无
- *功 能:BOD
- ******************************************/
- VOID BODDeinit(VOID)
- {
- BODCR = 0x00;
- }
- /****************************************
- *函数名称:main
- *输 入:无
- *输 出:无
- *功 能:函数主体
- ******************************************/
- INT32 main(VOID)
- {
- PROTECT_REG
- (
- PWRCON |= XTL12M_EN; //默认时钟源为外部晶振
- while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定
-
- CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
-
- P2_PMD=0x5555; //GPIO设置为输出模式
- )
- BODInit(4500);
- while(1);
- }
- VOID BOD_IRQHandler(void)
- {
- if(BODCR & ((1<<4)|(1<<6)))
- {
- P2_DOUT = 0xFF;
- Delayms(100);
- P2_DOUT = 0x00;
- Delayms(100);
- }
- else
- {
- P2_DOUT = 0x00;
- }
-
- BODDeinit();
- Delayms(500);
- BODInit(2700);
- }
- //VOID NMI_Handler(void)
- //{
- // printf("Hi, BOD has become NMI Int\n");
- //
- // if(BODCR & ((1<<4)|(1<<6)))
- // {
- // P2_DOUT = 0xFF;
- // Delayms(100);
- // P2_DOUT = 0x00;
- // Delayms(100);
- // }
- // else
- // {
- // P2_DOUT = 0x00;
- // }
- //
- // Delayms(500);
- //
- //}
|