本帖最后由 solo777 于 2012-8-11 15:13 编辑
/**
00503 * @brief Configures the HSI and CPU clock dividers.
00504 * @param ClockPrescaler Specifies the HSI or CPU clock divider to apply.
00505 * @retval None
00506 */
00507 void CLK_SYSCLKConfig(CLK_Prescaler_TypeDef CLK_Prescaler)
00508 {
00509
00510 /* check the parameters */
00511 assert_param(IS_CLK_PRESCALER_OK(CLK_Prescaler));
00512
00513 if (((uint8_t)CLK_Prescaler & (uint8_t)0x80) == 0x00) /* Bit7 = 0 means HSI divider */
00514 {
00515 CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_HSIDIV);
00516 CLK->CKDIVR |= (uint8_t)((uint8_t)CLK_Prescaler & (uint8_t)CLK_CKDIVR_HSIDIV);
00517 }
00518 else /* Bit7 = 1 means CPU divider */
00519 {
00520 CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_CPUDIV);
00521 CLK->CKDIVR |= (uint8_t)((uint8_t)CLK_Prescaler & (uint8_t)CLK_CKDIVR_CPUDIV);
00522 }
00523
00524 }
这个函数,就是操作Clock divider register (CLK_CKDIVR)寄存器
寄存器的4位和3位是hsi的分频配置 0-2是fmatster 配置。
我理解不了的就是库操作中,每个配置,都有一句
CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_CPUDIV);
这不就是把其他设置清0了吗?
比如,我想让hsi 分频8,否master再分128作为cpu,也就是hsi 分?8×128 分频。这个用库函数是无法实现的?是不是这样? |