初学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_In