打印
[DemoCode下载]

新唐M051 BOD设置程序

[复制链接]
1128|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大苏牙|  楼主 | 2015-9-4 20:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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);
//
//}


沙发
稳稳の幸福| | 2015-9-4 21:43 | 只看该作者
没有说BOD是干啥的,直接就程序代码了。

使用特权

评论回复
板凳
天灵灵地灵灵| | 2015-9-4 21:49 | 只看该作者
初始化采用了分支语句实现。

使用特权

评论回复
地板
捉虫天师| | 2015-9-4 21:58 | 只看该作者
BOD_IRQHandler(void)
以前不知道是干啥的,现在知道了,中断处理函数。

使用特权

评论回复
5
mintspring| | 2015-9-4 22:06 | 只看该作者
  • VOID BOD_IRQHandler(void)
  • {
  •      if(BODCR & ((1<<4)|(1<<6)))
  •   {
  •      P2_DOUT = 0xFF;
  •   Delayms(100);
  •   P2_DOUT = 0x00;
  •   Delayms(100);
  •   }
  •   else
  •   {
  •      P2_DOUT = 0x00;
  •   }


检测后,闪烁或关闭。

使用特权

评论回复
6
wahahaheihei| | 2015-9-6 09:18 | 只看该作者
BOD_IRQHandler
像这种命名的中断,入口在哪儿?是系统内部专门定义好的名称吗?

使用特权

评论回复
7
Luis德华| | 2015-9-6 09:22 | 只看该作者
BOD是什么意思啊,楼主给解释一下吧

使用特权

评论回复
8
Micachl| | 2015-9-8 21:27 | 只看该作者
不是太懂BOD是什么意思?

使用特权

评论回复
9
yiyigirl2014| | 2016-2-24 11:37 | 只看该作者
内置POR/BOD重置电路,以及内建10K RC驱动高可靠度看门狗计时器,提供高抗干扰能力;高精度22MHz RC振荡器,可由外部32.768 KHz自动校正精准度,小封装高集成度、提供丰富外设接口的高性价比32位元MCU,提供低功耗和10KHz/32.768KHz唤醒模式;再加上好上手的低价开发工具(NuTiny-Mini51),提供完整的驱动函式库;在升级韧体、资料Flash规划与在线除错方面,都相当容易规划与维护,其采取与M051兼容的QFN33脚位设计,可方便客户做脚位兼容升级的设计。

使用特权

评论回复
10
deviceplugs| | 2016-2-24 11:56 | 只看该作者
我要先弄明白BOD是什么意思才行

使用特权

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

本版积分规则

27

主题

278

帖子

4

粉丝