goby123 发表于 2020-1-6 16:18:05

f334的SystemInit函数位与写入CFGR寄存器的意义?

我用STM32CubeMX创建了一个stm32f334c8t6芯片的工程,在system_stm32f3xx.c文件下的void SystemInit()函数中有
/* Reset the RCC clock configuration to the default reset state ------------*/
/* Set HSION bit */
RCC->CR |= 0x00000001U;

/* Reset CFGR register */
RCC->CFGR &= 0xF87FC00CU;
我想问,为什么要对CFGR寄存器进行&=操作,STM32F334C8T6参考手册(文档编号RM0364)中118页写明了Reset value: 0x0000 0000,那按位与完肯定不还是0吗?做这个操作有什么用?而且位与的值的二进制为‭1111,1000,0111,1111,1100,0000,0000,1100‬,我发现23位和0位与,22位和1位与,而他们两个都是标了res的保留位,为啥要区别对待?

butterflyspring 发表于 2020-2-4 15:14:22

为了保证逻辑正确,所以设置了当前软件需要的时钟状态。至于保留位,可能只有库设计人员知道,但是对于用户来说,没有特殊说明就不用去配置它:)
页: [1]
查看完整版本: f334的SystemInit函数位与写入CFGR寄存器的意义?