[技术问答] BOD 低压检测,怎么读取这个状态位的值?

[复制链接]
1948|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)
这个宏后面的就是读取方法,实际上就是读那个寄存器。
捉虫天师 发表于 2015-8-24 20:03 | 显示全部楼层
确实是需要通过寄存器名字读的, 你可以看他的头文件。
天灵灵地灵灵 发表于 2015-8-24 20:26 | 显示全部楼层
没用过这个功能,我的项目没有考虑过这个。
yiyigirl2014 发表于 2015-8-24 21:14 | 显示全部楼层
上面大神在哪儿搞的程序啊?给个链接
 楼主| wqk 发表于 2015-8-25 14:14 | 显示全部楼层
本帖最后由 wqk 于 2015-8-25 14:26 编辑

我用的是bsp2.0,只能用这个版本,因为3.0的改动太大不兼容2.0的,而我们有很多项目不可能都一一修改。bsp2.0的怎么搞?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

wqk

8

主题

21

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部