完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、背景
最近,做移植,因此对目标平台做一些了解。 STM32L051C6T6资源为32K Flash; 2K EEPROM;8K RAM;37 GPIOs;1ADC(10 Channels) 2、系统刚起来时的时钟配置 时钟配置是嵌入式程序中比较重要且基础的部分。 有四种不同的时钟源,可用于驱动系统时钟(SYSCLK)。 时钟源:HSI16、HSE、PLL、MSI AHB、APB1和APB2域的最大时钟为32MHz。 2.1 调用开始 从startup_stm32l051xx.s文件中,调用SystemInit函数 IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 2.2 查看SystemInit(void)源码内容 /** * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit (void) { /*!《 Set MSION bit 使能MS时钟晶振*/ RCC-》CR |= (uint32_t)0x00000100; /*!《 Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], MCOSEL[2:0] and MCOPRE[2:0] bits 清零*/ RCC-》CFGR &= (uint32_t) 0x88FF400C; /*!《 Reset HSION, HSIDIVEN, HSEON, CSSON and PLLON bits 清零*/ RCC-》CR &= (uint32_t)0xFEF6FFF6; /*!《 Reset HSI48ON bit 清零*/ RCC-》CRRCR &= (uint32_t)0xFFFFFFFE; /*!《 Reset HSEBYP bit 清零*/ RCC-》CR &= (uint32_t)0xFFFBFFFF; /*!《 Reset PLLSRC, PLLMUL[3:0] and PLLDIV[1:0] bits 清零*/ RCC-》CFGR &= (uint32_t)0xFF02FFFF; /*!《 Disable all interrupts 除能所有RCC终端*/ RCC-》CIER = 0x00000000; /* Configure the Vector Table location add offset address ------------------*/ #ifdef VECT_TAB_SRAM SCB-》VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #else SCB-》VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ #endif } 主要是使能MS晶振,对于其他时钟源进行除能、RCC中断除能、向量表重置。 2.3 起来的系统时钟频率是多少 MSI(内部多速率)振荡器时钟 微处理器以上电复位/System or RTC 域复位和从待机模式复位启动之后,用处于2.1MHz的MSI作为系统时钟。 HSI16(16MHz) 或HSI16的4分频(4MHz)或处于任何频率的MSI作为从停止模式醒来的时钟。 因此 在Main函数中,常看见一下代码来配置TICK中断的间隔 SysTick_Config(2000); /* 1ms config */ 3、常见时钟配置 3.1 内部HSI配置为系统时钟 3.2 外部HSE配置为系统时钟 3.3 外部HSE,PLL配置为系统时钟 RCC-》APB1ENR |= (RCC_APB1ENR_PWREN); /* (1) */ PWR-》CR = (PWR-》CR & ~(PWR_CR_VOS)) | PWR_CR_VOS_0; /* (2) */ RCC-》CR |= RCC_CR_HSEON; while(RCC-》CR & (RCC_CR_HSERDY) != RCC_CR_HSERDY) {} RCC-》CFGR |= RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV2; /* (5) */ RCC-》CR |= RCC_CR_PLLON; /* (6) */ while((RCC-》CR & RCC_CR_PLLRDY) == 0) /* (7) */ {} |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:41 , Processed in 0.647962 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号