问答

汇集网友智慧,解决技术难题

21ic问答首页 - HC32L136的bgr问题

技术交流 单片机

HC32L136的bgr问题

pltczw6662023-01-03
有没有兄弟遇到这个问题?
当BGR_CR.BGR_EN置1时,SysTick->CTRL.CLKSOURCE和SysTick->CTRL.TICKINT会被清零
回答 +关注 15
1246人浏览 3人回答问题 分享 举报
3 个回答
  • 本帖最后由 ddxx 于 2023-1-4 15:21 编辑

    void delay10us(uint32_t u32Cnt)
    {
                    uint32_t Cur = SysTick->VAL;
                    uint32_t Mod = SysTick->LOAD;
        uint32_t Cnt = (u32Cnt * SystemCoreClock) / 100000;
                    boolean_t Dec = FALSE;
            
                    while (Cnt > Mod)
                    {
                                    if (SysTick->VAL >= Cur)
                                    {
                                                    if (Dec == FALSE)
                                                    {
                                                                    Cnt -= Mod;
                                                                    Dec = TRUE;
                                                    }
                                    }
                                    else
                                                    Dec = FALSE;
                    }
                    if (Cnt > Cur)
                    {
                                    while (SysTick->VAL < Cur){};
                                    while (SysTick->VAL > Mod + Cur - Cnt){};
                    }
                    else
                                    while (SysTick->VAL > Cnt - Cur){};
    }
    重写ddl.c中的延时函数。
  • pltczw666 发表于 2023-1-3 17:20
    弄明白了。
    void Bgr_BgrEnable(void)
    {   

    是的,如果你要使用systick和delay函数,最好自己重新写一下delay函数
  • 弄明白了。
    void Bgr_BgrEnable(void)
    {   
        M0P_BGR->CR |= 0x1u;
       
        delay10us(2);
    }
    这个函数中的 delay10us(2);把寄存器清了。

您需要登录后才可以回复 登录 | 注册