打印

HC32L136的bgr问题

[复制链接]
1289|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝