ST意法半导体
直播中

张波

7年用户 1384经验值
私信 关注
[问答]

关于LL库的”LL_AHB1_GRP1_EnableClock”函数问题求解

关于 LL_AHB1_GRP1_EnableClock,在函数中设置位后,将其读取为“tmprg”并转换为 void 类型。读书的理由是什么?

__STAtiC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t 外设)
{
__IO uint32_t tmpreg;
SET_BIT(RCC->AHBENR, Periphs);
/* 启用 RCC 外设时钟后的延迟 */
tmpreg = READ_BIT(RCC->AHBENR, Periphs);
(无效)tmpreg;
}



回帖(1)

王山崎

2022-12-27 12:08:22
这是因为在参考手册中指出,时钟验证后需要稍等片刻才能生效。
这样做的方法是再次读取寄存器。这样我们就可以确定寄存器中的写入是有效的(没有被总线之间的多个桥延迟)并且在使用它之前时钟已经启动。
这里使用的方法有点粗糙,因为不需要将读取结果存储在 volatile 变量中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分