外设时钟使能语句的问题
主芯片使用的是STM32F207ZET6.
如下图所示,TIM3挂载在APB1总线下面的
但是有个疑问,底下外设时钟使能的语句都能使用吗,有什么区别吗?如果要使用TIM3,按道理来说不应该是第二种写法吗
RCC_AHB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
求大佬的帮助,小弟在此谢过。
我一般用的下面语句,我建议你跟进去看寄存器配置有何区别,结合STM32参考手册 RCC_AHB1是寄存器复位寄存器的配置,没有TIM3选项的。
RCC_APB1才是寄存器使能寄存器
这句:RCC_AHB1PenriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 有点牛头不对马嘴了!楼主有点粗心了。
正确的应该是:RCC_APB1PenriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
这样肯定是不行的嘛!看一下时钟树。
#define RCC_APB1Periph_TIM3 ((uint32_t)0x00000002)
要是把RCC_APB1Periph_TIM3参数传进RCC_AHB1PeriphClockCmd()函数中,那出大乱子的。
RCC_AHB1PeriphClockCmd()函数中的参数值等于0x00000002那是RCC_AHB1Periph_GPIOB。
#define RCC_AHB1Periph_GPIOB ((uint32_t)0x00000002)
楼主确定一下这句代码从哪儿来的,从代码上看是APB1。
#define __HAL_RCC_TIM3_CLK_ENABLE() do { \
__IO uint32_t tmpreg = 0x00U; \
SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
/* Delay after an RCC peripheral clock enabling */ \
tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
UNUSED(tmpreg); \
页:
[1]