專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

新唐M051 BOD設置程序

作者:huqin   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年09月01日   【字體:
給大家共享一下我的學習經(jīng)驗新唐M051單片機 BOD設置程序成功版:
 
#include "SmartM_M0.h"
/****************************************
*函數(shù)名稱:main
*輸    入:無
*輸    出:無
*功    能:函數(shù)主體
******************************************/
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; 
}
/****************************************
*函數(shù)名稱:BODDeinit
*輸    入:無
*輸    出:無
*功    能:BOD
******************************************/
VOID BODDeinit(VOID)
{
  BODCR = 0x00;
}
/****************************************
*函數(shù)名稱:main
*輸    入:無
*輸    出:無
*功    能:函數(shù)主體
******************************************/
INT32 main(VOID)
{
  PROTECT_REG
  (
   PWRCON |= XTL12M_EN;      //默認時鐘源為外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz時鐘穩(wěn)定 
  
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //設置外部晶振為系統(tǒng)時鐘
  
   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);
//
//}
關閉窗口