HC32L136的bgr问题

[复制链接]
 楼主| pltczw666 发表于 2023-1-3 16:56 | 显示全部楼层 |阅读模式
有没有兄弟遇到这个问题?
当BGR_CR.BGR_EN置1时,SysTick->CTRL.CLKSOURCE和SysTick->CTRL.TICKINT会被清零
 楼主| pltczw666 发表于 2023-1-3 17:20 | 显示全部楼层
弄明白了。
void Bgr_BgrEnable(void)
{   
    M0P_BGR->CR |= 0x1u;
   
    delay10us(2);
}
这个函数中的 delay10us(2);把寄存器清了。
martinhu 发表于 2023-1-4 11:03 | 显示全部楼层
pltczw666 发表于 2023-1-3 17:20
弄明白了。
void Bgr_BgrEnable(void)
{   

是的,如果你要使用systick和delay函数,最好自己重新写一下delay函数
ddxx 发表于 2023-1-4 15:20 | 显示全部楼层
本帖最后由 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中的延时函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

46

帖子

0

粉丝
快速回复 返回顶部 返回列表