2019-07-20 20:00发布
liuchang 发表于 2016-9-20 17:03 大神,我测试了下,有点问题,恳请指教不管我使用断电后上电,还是使用硬件复位,结果都是一样的,如下 [mw_ ...
最多设置5个标签!
//******************************************************************************
// 函数名称: RCC_GetFlagStatus
// 功能描述: 检查指定的RCC标志设置与否.
// 输入参数: RCC_FLAG:要检查的标志.
// 这个参数可以是下面的值之一:
// - RCC_FLAG_HSIRDY: HIS振荡时钟就绪
// - RCC_FLAG_HSERDY: HSE振荡时钟就绪
// - RCC_FLAG_PLLRDY: PLL时钟就绪
// - RCC_FLAG_LSERDY: LSE振荡时钟就绪
// - RCC_FLAG_LSIRDY: LSI振荡时钟就绪
// - RCC_FLAG_PINRST: 引脚复位
// - RCC_FLAG_PORRST: POR/PDR复位
// - RCC_FLAG_SFTRST: 软件复位
// - RCC_FLAG_IWDGRST: 独立看门狗复位
// - RCC_FLAG_WWDGRST: 窗口看门狗复位
// - RCC_FLAG_LPWRRST: 低电量复位
// 输出参数: 无
// 返回参数: RCC_FLAG的新状态(SET或RESET).
FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG)来查看!
断电是低电量复位,硬件复位是引脚复位。
是不是需要清除上一次的复位原因,你试试。你是不是插着j-link,导致系统并没有正真掉电。
[mw_shl_code=c,true]
{
uint32_t CSR = RCC->CSR;
#define SFTRST_MASK (1ul<<28)
#define IWDGRST_MASK (1ul<<29)
#define WWDGRST_MASK (1ul<<30)
if(CSR & (SFTRST_MASK | IWDGRST_MASK | WWDGRST_MASK))
{
rt_kprintf("board reset by: %s %s %s ",
(CSR & SFTRST_MASK)?"SFTRST":"",
(CSR & IWDGRST_MASK)?"IWDGRST":"",
(CSR & WWDGRST_MASK)?"WWDGRST":"");
RCC_ClearFlag();
}
}[/mw_shl_code]
参考这个自己按需要改一下。
一周热门 更多>