本工程板级支持包文件适用于野火stm32f429 开发板。
编程要点
开启HSE/HSI,并等待HSE/HSI 稳定
设置AHB, APB2, APB1 的预分频因子
设置PLL 的时钟来源,设置VCO 输入时钟分频因子PLL_M,设置VCO 输出时钟倍频因子PLL_N,设置PLLCLK 时钟分频因子PLL_P,设置OTGFS, SDIO, RNG 时钟分频因子PLL_Q
开启PLL,并等待PLL 稳定
把PLLCLK 切换为系统时钟SYSCLK
读取时钟切换状态位,确保PLLCLK 被选为系统时钟
bsp_clk.c
/**
******************************************************************************
* @file bsp_clk.c
* @author Waao
* @version V1.0.0
* @date 21-Dec-2018
* @brief This file contains some board support package's functions for the CLK.
*
******************************************************************************
* @attention
*
* None
*
******************************************************************************
*/
#include /** * @brief Initialize the SYSCLK powered by HSE * @note None * @param m: VOC input clock's frequency division factor. * n: VOC output clock's frequency doubling factor. * p: PLLCLK clock's frequency division factor. * q: OTG, FS, SDIO and RNG clock's frequency division factor. * @retval None */ void HSE_SetSysClock(uint32_t m, uint32_t n, uint32_t p, uint32_t q) { __IO uint32_t HSEStartUpStatus = 0; //Enable the HSE, open the external crystal oscillator RCC_HSEConfig(RCC_HSE_ON); //Waiting the HSE to be stable HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_VOS; //HCLK = SYSCLK / 1 RCC_HCLKConfig(RCC_SYSCLK_Div1); //PCLK2 = HCLK / 2 RCC_PCLK2Config(RCC_HCLK_Div2); //PCLK1 = HCLK / 4 RCC_PCLK1Config(RCC_HCLK_Div4); //Configure the PLL RCC_PLLConfig(RCC_PLLSource_HSE, m, n, p, q); //Enable the PLL RCC_PLLCmd(ENABLE); //Waiting the PLL to be stable while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } /*--------------------------------------------*/ //Open the OVER-RIDE mode to reach a higher frequency PWR->CR |= PWR_CR_ODEN; while((PWR->CSR & PWR_CSR_ODRDY) == 0) { } PWR->CR |= PWR_CR_ODSWEN; while((PWR->CSR & PWR_CSR_ODSWRDY) == 0) { } //Configure the FLASH FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; /*---------------------------------------------*/ //Change the clock of the PLL to SYSCLK when PLL to be stable RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08) { } } else { while(1) { } } } /** * @brief Initialize the SYSCLK powered by HSI * @note None * @param m: VOC input clock's frequency division factor. * n: VOC output clock's frequency doubling factor. * p: PLLCLK clock's frequency division factor. * q: OTG, FS, SDIO and RNG clock's frequency division factor. * @retval None */ void HSI_SetSysClock(uint32_t m, uint32_t n, uint32_t p, uint32_t q) { __IO uint32_t HSIStartUpStatus = 0; //Initialize the RCC parameter to reset status RCC_DeInit(); //Enable the HSI, HSI=16M RCC_HSICmd(ENABLE); //Waiting the HSI to be ready HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY; //Continue to run only when the HSI to be ready if(HSIStartUpStatus == RCC_CR_HSIRDY) { RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_VOS; //HCLK = SYSCLK / 1 RCC_HCLKConfig(RCC_SYSCLK_Div1); //PCLK2 = HCLK / 2 RCC_PCLK2Config(RCC_HCLK_Div2); //PCLK1 = HCLK / 4 RCC_PCLK1Config(RCC_HCLK_Div4); //Configure the PLL RCC_PLLConfig(RCC_PLLSource_HSI, m, n, p, q); //Enable the PLL RCC_PLLCmd(ENABLE); //Waiting the PLL to be stable while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } /*--------------------------------------------*/ //Open the OVER-RIDE mode to reach a higher frequency PWR->CR |= PWR_CR_ODEN; while((PWR->CSR & PWR_CSR_ODRDY) == 0) { } PWR->CR |= PWR_CR_ODSWEN; while((PWR->CSR & PWR_CSR_ODSWRDY) == 0) { } //Configure the FLASH FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; /*---------------------------------------------*/ //Change the clock of the PLL to SYSCLK when PLL to be stable RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08) { } } else { while(1) { } } } /** * @brief Configure the MCO1 output the clock signal * @note None * @param None * @retval None */ void MCO1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(MCO1_CLK_PORT, ENABLE); GPIO_InitStructure.GPIO_Pin = MCO1_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(MCO1_PORT, &GPIO_InitStructure); } /** * @brief Configure the MCO2 output the clock signal * @note None * @param None * @retval None */ void MCO2_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(MCO2_CLK_PORT, ENABLE); GPIO_InitStructure.GPIO_Pin = MCO2_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(MCO2_PORT, &GPIO_InitStructure); } bsp_clk.h /** ****************************************************************************** * @file bsp_clk.h * @author Waao * @version V1.0.0 * @date 21-Dec-2018 * @brief This file contains some board support package's definition for the CLK. * ****************************************************************************** * @attention * * None * ****************************************************************************** */ #ifndef __BSP_LED_H_ #define __BSP_LED_H_ #include #define PLL_M 25 #define PLL_N 360 #define PLL_P 2 #define PLL_Q 7 #define MCO1_PIN GPIO_Pin_8 #define MCO1_PORT GPIOA #define MCO1_CLK_PORT RCC_AHB1Periph_GPIOA #define MCO2_PIN GPIO_Pin_9 #define MCO2_PORT GPIOC #define MCO2_CLK_PORT RCC_AHB1Periph_GPIOC void HSE_SetSysClock(uint32_t m, uint32_t n, uint32_t p, uint32_t q); void HSI_SetSysClock(uint32_t m, uint32_t n, uint32_t p, uint32_t q); void MCO1_GPIO_Config(void); void MCO2_GPIO_Config(void); #endif
上一篇:STM32F429 >> 5. 按键控制LED 开关
下一篇:STM32F429 >> 7. 中断
推荐阅读
史海拾趣
ASSMANN WSW components公司一直致力于技术创新和产品研发。在某个关键时刻,公司研发团队成功开发出了一种具有革命性的新型连接器,这种连接器不仅性能稳定、寿命长,而且具有极高的可靠性和安全性。这一技术突破使得ASSMANN WSW在电子元件市场上脱颖而出,迅速成为行业内的佼佼者。
ELEMENT14公司最初是一家电子元器件分销商,但随着市场的变化和客户需求的升级,公司决定转型为提供一站式服务的平台。这一转变意味着公司不仅要提供电子元器件,还要提供软件、技术支持、在线社区等全方位的服务。通过不断的投入和努力,ELEMENT14成功转型为一个综合性的电子元器件服务平台,满足了客户多样化的需求。
为了满足全球客户的需求,ELEMENT14致力于构建和优化全球供应链。公司与多家国际知名电子元器件制造商建立了长期稳定的合作关系,确保了货源的稳定性和多样性。同时,ELEMENT14还建立了全球物流体系,实现了快速、准确的物流配送服务。这些措施不仅提升了客户满意度,也增强了公司在全球市场的竞争力。
AURORA公司成立于2016年,初出茅庐便面临着巨大的挑战。然而,公司的三位联合创始人Chris Urmson、J. Andrew Bagnell和Sterling Anderson均来自自动驾驶汽车领域的顶尖团队,拥有丰富的经验和深厚的技术背景。他们凭借对自动驾驶技术的深刻理解和前瞻性眼光,为AURORA的发展奠定了坚实的基础。在初创时期,AURORA通过与多家汽车制造商合作,共同设计和开发传感器、软件和数据服务,逐渐在自动驾驶领域崭露头角。
随着电子技术的飞速发展,Accetek公司意识到只有不断创新才能在市场中立于不败之地。因此,公司加大了对技术研发的投入,建立了一支高素质的研发团队。经过无数次的试验和失败,团队终于取得了重大突破,成功开发出了一种新型的数控雕刻机,具有更高的精度和更稳定的性能。这一创新成果不仅为公司赢得了更多的客户和市场份额,也为公司的长远发展奠定了坚实的基础。
随着全球市场的不断变化和发展,ELECTRONICON积极实施国际化战略,拓展海外市场。公司在全球范围内建立了完善的销售和服务网络,为客户提供及时、高效的服务。未来,ELECTRONICON将继续秉承“质量为本、客户至上”的经营理念,不断创新和发展,为电子行业的繁荣做出更大的贡献。
1.没有人强迫你,是你志愿选择了symbian os. 2.这是最重要的问题,开发symbian 平台的软件到底有没有前途呢?每个symbian os的开发者都在考虑这个的问题,答案很简单,问问市场就知道了,只要你做的是精品,肯定会得到认可的。全球每年生产几亿部 ...… 查看全部问答∨ |
|
一、毕业论文的要求和内容 要求: 1. 掌握串行通信的基本原理。 2. 掌握RS-232的基本结构和特性。 3. 掌握8250的工作特性。 4. 掌握串行通信的硬件连接方法。 5. 查找与本课题相关的一篇外文资料,并翻译成中文。 6. 小组共同讨论,每周向指 ...… 查看全部问答∨ |
|
一、设备安装前的准备 1、安装设备前需对系统所有线路进行全面检查,是否存在断线或短路现象; 2、确认整个系统的线路无任何故障后,方可安装设备,接线的各接点必须加上焊锡; 3、安装设备时必须严格按照产品所附说明书或安装手册进行 ...… 查看全部问答∨ |
|
看过你的一个关于34063的帖子,说效率可以搞到97%,甚是佩服,现在我也画了一个34063的图,请指导指导,输入5V/2A,请问输出9V,电流能达到多少? 哪个电路参数需要调整?谢谢 很多人说我加的扩流电路没必要。。。 … 查看全部问答∨ |
|