在STM32所带的CAN例子中,时钟部分的设置如下 RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2);
/* Select HSE as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
/* Wait till HSE is used as system clock source */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); 说明系统使用的是外部8M的时钟,APB1的时钟为4M,在CAN的设置中 CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=5; 此时的波特率为100K,哪位大哥解释一下是怎么算出来的,初次接触CAN,很多问题不懂,见笑了
|