Owen 发表于 2019-2-13 21:55:04

HAL库 软复位和查询复位状态用哪个函数?

刚从标准库转到HAL库,有些函数找不到;请教大虾,标准库软复位NVIC_SystemReset和查询软复位标志RCC_GetFlagStatus(RCC_FLAG_SFTRST),在HAL库中怎样使用?

GKoSon 发表于 2019-2-14 12:27:05

读RCC寄存器

如下
void get_resert_status(void)
{

    if( READ_BIT(RCC->CSR, RCC_CSR_FWRSTF) != RESET)
    {
      log_err("硬件原因复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_OBLRSTF) != RESET)
    {
      log_err("保护字节复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) != RESET)
    {
      log(INFO,"复位按键复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_BORRSTF) != RESET)
    {
      log_err("低于电压阈值复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) != RESET)
    {
      log_err("软件复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) != RESET)
    {
      log_err("内置看门狗复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) != RESET)
    {
      log_err("外置看门狗复位\n");
    }
    if( READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) != RESET)
    {
      log_err("低功耗非法模式复位\n");
    }
    __HAL_RCC_CLEAR_RESET_FLAGS();

奏奏奏 发表于 2019-2-14 09:17:47

我在HAL库里面软件复位的办法是:
(1)设置IWDG;
(2)根据条件判断喂狗还是不喂狗。

可能有更直接的办法,但是我不知道。我这种做法的好处是可以通过条件触发复位。

Owen 发表于 2019-2-14 12:58:48

与龙共舞 发表于 2019-2-14 12:27
读RCC寄存器

如下


试了可以,谢谢

废鱼 发表于 2019-2-14 16:16:32

NVIC_SystemReset可以复位,
__HAL_RCC_GET_FLAG这个可以用于查询复位原因。

Owen 发表于 2019-3-5 10:52:40

安 发表于 2019-2-14 16:16
NVIC_SystemReset可以复位,
__HAL_RCC_GET_FLAG这个可以用于查询复位原因。

谢谢

pjzmj2012 发表于 2020-4-1 16:54:48

真不明白ST是怎么想的,既然有标准库还要推出hAL库干什么,多那么多不兼容的程序

Owen 发表于 2020-5-8 22:14:16

pjzmj2012 发表于 2020-4-1 16:54
真不明白ST是怎么想的,既然有标准库还要推出hAL库干什么,多那么多不兼容的程序 ...

STCubemx+HAL+LL是趋势吧,G系列没有标准库了,不接受新事物就被淘汰

pjzmj2012 发表于 2020-8-28 17:10:01

Owen.li 发表于 2020-5-8 22:14
STCubemx+HAL+LL是趋势吧,G系列没有标准库了,不接受新事物就被淘汰

趋势?这算什么趋势难用的要死。要淘汰老早淘汰了,现在M4 M3核心的芯片选择多了去了,不见得非得用ST的
。到时候淘汰的我看是st

g921002 发表于 2020-8-29 00:10:41

pjzmj2012 发表于 2020-8-28 17:10
趋势?这算什么趋势难用的要死。要淘汰老早淘汰了,现在M4 M3核心的芯片选择多了去了,不见得非得用ST的
...
那你可以換別家用,比較看看他們BSP寫的怎麼樣。XD

HAL/LL主要是跟middleware和更上層應用銜接。
程式寫不到那種境界,是感受不到它好用的地方。

yangquandan 发表于 2020-11-20 10:46:18

pjzmj2012 发表于 2020-8-28 17:10
趋势?这算什么趋势难用的要死。要淘汰老早淘汰了,现在M4 M3核心的芯片选择多了去了,不见得非得用ST的
...

个人觉得淘汰不淘汰跟开源度有关,ST的最大好处就是开源性极高,所以才会有很多的人去选择他

jaydai 发表于 2024-3-1 16:25:56

STCubemx+HAL+LL确实是趋势,效率也高。:)
页: [1]
查看完整版本: HAL库 软复位和查询复位状态用哪个函数?