1、嵌入式系统设计(基于STM32F429)第 8 章课后题参考答案1. 系统时钟的三个输入选择分别是 HSI 、_HSE_、 PLLCLK 。2. 复位后,系统时钟源是 HSI 。3. STM32F429 微控制器内部的 5 个时钟源:HIS、 HSE _、LSI、LSE、 PLLCLK 4. RC 复位电路形式是什么?5. STM32F429 微控制器中 GPIO、USART1 和 TIM1 的时钟分别来自 _HCLK_、_PCLK2 、PCLK2 。6. 阐述PLL 的倍频原理。当锁相环处于锁定状态时,鉴相器( PD)的两输入端一定是两个频率完全一样但有一定相位差的信号。如果它们的频率不同,
2、则在压控振荡器( VCO)的输入端一定会产生一个控制信号使压控振荡器的振荡频率发生变化,最终使鉴相器( PD)的两输入信号(一个是锁相环的输入信号 Ui, 一个是压控振荡器的输出信号 Uo)的频率完全一样,则环路系统处于稳定状态。基于此原理,如果在 VCO 之后,加一个分频器(N 分频),在反馈回锁相环输入端,此时输出信号即为原来的 N 倍。Ui晶振电路鉴相器fi低通滤波器压控U0振荡器fofoN分频器fi=fo/N7. 请说明 SYSCLK、HCLK、PCLK1 及PCLK2 这 4 个时钟之间的关系。答:SYSCLK= HCLK。PCLK1 及PCLK2 的频率由 RCC 时钟配置寄存器
3、(RCC_CFGR)的 PPRE1 和 PPRE2 两个位域决定。默认系统复位后。PCLK1= HCLK /4 PCLK2= HCLK /28. 选择 HSE 振荡器时钟(8MHz)作为 PLL 时钟源,并选择 PLL 生成 180MHz 的系统时钟,那么PLL 的分频因子 M、P 和倍频因子N,可以分别是 8 、 2 、 360 ,系统时钟不分频产生 AHB 时钟 HCLK=180MHz。当 APB1 总线 4 分频 HCLK 时钟,PCLK1= 45 MHz,当 APB2 总线2 分频 HCLK 时钟,PCLK2= 90 MHz,。9. 使用 HSE 振荡器时钟作为 PLL 的时钟源,并配
4、置 PLL 作为系统时钟源系统时钟设置为168MHz?答:假设 HSE = 25MHz。 IO uint32_t HSEStartUpStatus = 0;/*-第 1 步*/RCC_HSEConfig(RCC_HSE_ON); / 使能 HSE,开启外部晶振HSEStartUpStatus = RCC_WaitForHSEStartUp();/ 等待 HSE 启动稳定if (HSEStartUpStatus = SUCCESS)/判断 HSE 是否启动成功,不成功的话,出错处理/*在程序运行中更改系统时钟的话需要先将时钟源切换到其他,并关闭 PLL,再进行 PLL 配置*/RCC_SYSCL
5、KConfig(RCC_SYSCLKSource_HSE); / 将系统时钟切换到 HSE while (RCC_GetSYSCLKSource() != 0x04) / 判断 HSE 是否被选为系统时钟RCC_PLLCmd(DISABLE);/禁止 PLL/*-第 2 步*/RCC_HCLKConfig(RCC_SYSCLK_Div1); / HCLK = SYSCLK / 1 RCC_PCLK2Config(RCC_HCLK_Div2); / PCLK2 = HCLK / 2 RCC_PCLK1Config(RCC_HCLK_Div4); / PCLK1 = HCLK / 4/*-第 3
6、步*/RCC_PLLConfig(RCC_PLLSource_HSE, 25, 336, 2, 1); / 配置 PLL/*-第 4 步*/RCC_PLLCmd(ENABLE); / 使能 PLLwhile (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) / 等待 PLL 稳定/*-开启 OVER-RIDE 模式,以能达到更高频率*/PWR-CR |= PWR_CR_ODEN;while(PWR-CSR & PWR_CSR_ODRDY) = 0)PWR-CR |= PWR_CR_ODSWEN;while(PWR-CSR & PWR_CSR_ODSWRD
7、Y) = 0)/*-配置 FLASH 预取指,指令缓存,数据缓存和等待状态*/FLASH-ACR = FLASH_ACR_PRFTEN| FLASH_ACR_ICEN| FLASH_ACR_DCEN| FLASH_ACR_LATENCY_5WS;/*-第 5 步*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /把 PLL 时钟切换为系统时钟/*-第 6 步*/while (RCC_GetSYSCLKSource() != 0x08) /判断PLLCLK 是否被选为系统时钟else / HSE 启动出错处理while (1)10. 请查阅资料确定 USART1、SPI1、GPIOA、TIM1 及 TIM2 分别使用时钟源是什么? 答:USART1:PCLK2 SPI1:PCLK2 GPIOA:HCLK TIM1:PCLK2 TIM2:PCLK111 四个片上外设时钟使能函数分别是( 只需要函数名 ): RCC_AHB1PeriphClockCmd 、RCC_AHB2PeriphClockCmd、RCC_APB1PeriphClockCmd、RCC_APB2PeriphClockCmd。12使能 ADC1 的时钟使用函_RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1 , ENABLE ) 。