完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
初学STM32,在main()函数之前的初始化上就出了很多问题,记一下笔记。
芯片是STM32F103RCT6,用IAR8.40.1编译下载。外部有源晶振24MHz,芯片主频72MHz,用的3.5的固件库。 程序修改 初始化时为了适配晶振频率和主频修改的部分: stm32f10x.h里: #define HSE_VALUE ((uint32_t)24000000) /*!《 Value of the External oscillator in Hz 修改了外部高速时钟频率为24MHz system_stm32f10x.c里:static void SetSysClockTo72(void)函数 static void SetSysClockTo72(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /****************使用的有源晶振是挂载在PB1上的,在使能HSE之前需要先把PB1的值拉高(并设置为强输出状态)才能让有源晶振起振*************/ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PB1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //普通推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数配置 GPIO GPIO_SetBits(GPIOB,GPIO_Pin_1); /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* Enable HSE */ RCC-》CR |= ((uint32_t)RCC_CR_HSEON); RCC_HSEConfig(RCC_HSE_Bypass); /*****************************************************************用的是有源晶振,所以用Bypass*************************************/ ……………… #else /* PLL configuration: PLLCLK = HSE * 3 = 72 MHz */ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL3); /**********************************************************更改PLLMULL的值,使得HSE*3=72MHz***************************/ ……………… } ** 调试部分 1.怎么查看HSE是否成功起振 system_stm32f10x.c里void SetSysClockTo72()函数 在图示处设置断点,如果进入HSEStatus = (uint32_t)0x01;则成功起振,如果进入 HSEStatus = (uint32_t)0x00;则未成功起振,然后会自动切换成HSI。 2.PLLMULL参数忘了改导致超频了,出现了reset failed 和Failed to load flash loader错误,其实本身和这两个错误无关,只是因为板子在超频后进入某种保护状态(?不确定)导致无法再向仿真器ST-LINK中写入程序。解决方法是上电前将芯片上的一个引脚和3.3V短接(记不太清具体引脚),使得stm32进入boot1状态,然后上电一下。之后就可以重新烧入程序了。 3.多次出现ST-LINK NO MCU device found错误,是板子接触不太好,敲敲打打就解决了。 最后是一些很小的点: 1.建立环境的时候core_cm3.c不能用,要把后缀改了让系统不能识别,同时要在project_options_library configuration里勾选use CSMIS 2.记得修改stm32f10x.h中的#define USE_STDPERIPH_DRIVER,这句话在官方库中是注释掉的。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1758 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1931浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
721浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
563浏览 3评论
588浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 20:19 , Processed in 0.691341 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号