打印
[技术问答]

BOD 低压检测,怎么读取这个状态位的值?

[复制链接]
1380|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wqk|  楼主 | 2015-8-24 08:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何读出这个值,BOD_OUT,用C
沙发
稳稳の幸福| | 2015-8-24 13:00 | 只看该作者
直接读相关寄存器的值应该就可以了。

使用特权

评论回复
板凳
tcchiu1| | 2015-8-24 13:14 | 只看该作者
楼主多看一下寄存器的说明及BSP的范例。

#define SYS_GET_BOD_INT_FLAG()          (SYS->BODCR & SYS_BODCR_BOD_INTF_Msk)

BOD范例包在SYS范例中。

\M051SeriesBSP_CMSIS_Rev3.00.002\SampleCode\StdDriver\SYS\KEIL

    /* Unlock protected registers for Brown-Out Detector settings */
    SYS_UnlockReg();

    /* Check if the write-protected registers are unlocked before BOD setting and CPU Reset */
    if(SYS_IsRegLocked() == 0)
    {
        printf("Protected Address is Unlocked\n");
    }

    /* Enable Brown-Out Detector, and set Brown-Out Detector voltage 2.7V */
    SYS_EnableBOD(SYS_BODCR_BOD_INTERRUPT_EN, SYS_BODCR_BOD_VL_2_7V);

    /* Enable BOD IRQ */
    NVIC_EnableIRQ(BOD_IRQn);




/*---------------------------------------------------------------------------------------------------------*/
/*  Brown Out Detector IRQ Handler                                                                         */
/*---------------------------------------------------------------------------------------------------------*/
void BOD_IRQHandler(void)
{
    /* Clear BOD Interrupt Flag */
    SYS_CLEAR_BOD_INT_FLAG();

    printf("Brown Out is Detected\n");
}

使用特权

评论回复
地板
稳稳の幸福| | 2015-8-24 18:38 | 只看该作者
#define SYS_GET_BOD_INT_FLAG()          (SYS->BODCR & SYS_BODCR_BOD_INTF_Msk)
这个宏后面的就是读取方法,实际上就是读那个寄存器。

使用特权

评论回复
5
捉虫天师| | 2015-8-24 20:03 | 只看该作者
确实是需要通过寄存器名字读的, 你可以看他的头文件。

使用特权

评论回复
6
天灵灵地灵灵| | 2015-8-24 20:26 | 只看该作者
没用过这个功能,我的项目没有考虑过这个。

使用特权

评论回复
7
yiyigirl2014| | 2015-8-24 21:14 | 只看该作者
上面大神在哪儿搞的程序啊?给个链接

使用特权

评论回复
8
wqk|  楼主 | 2015-8-25 14:14 | 只看该作者
本帖最后由 wqk 于 2015-8-25 14:26 编辑

我用的是bsp2.0,只能用这个版本,因为3.0的改动太大不兼容2.0的,而我们有很多项目不可能都一一修改。bsp2.0的怎么搞?

使用特权

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

本版积分规则

wqk

8

主题

21

帖子

1

粉丝