打印
[DemoCode下载]

新唐M051 BOD设置程序

[复制链接]
868|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaheihei|  楼主 | 2016-8-13 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
给大家共享一下我的学习经验新唐M051单片机 BOD设置程序成功版:

#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);
//
//}




沙发
gejigeji521| | 2016-8-13 21:44 | 只看该作者
有如下事件之一发生时,系统复位,这些复位事件标志可以由寄存器RSTRC读出.
„ 上电复位(POR)
„ 复位脚( /RESET)上有低电平
„ 看门狗定时溢出复位(WDT)
„ 低电压复位(LVR)
„ 欠压检测复位(BOD)
„ CPU复位
„ 系统复位有如下事件之一发生时,系统复位,这些复位事件标志可以由寄存器RSTRC读出.
„ 上电复位(POR)
„ 复位脚( /RESET)上有低电平
„ 看门狗定时溢出复位(WDT)
„ 低电压复位(LVR)
„ 欠压检测复位(BOD)
„ CPU复位
„ 系统复位

使用特权

评论回复
板凳
huangcunxiake| | 2016-8-13 22:15 | 只看该作者
欠压复位这个例程非常有用,通过分支结构来确认欠压复位的条件。

使用特权

评论回复
地板
wahahaheihei|  楼主 | 2016-8-15 20:51 | 只看该作者
系统复位,这些复位事件标志可以由寄存器RSTRC读出.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

217

主题

3043

帖子

12

粉丝