初级会员

- 积分
- 86
- 金钱
- 86
- 注册时间
- 2016-9-7
- 在线时间
- 19 小时
|
20金钱
- void sys_Configuration(void)
- {
- /* System Clocks Configuration */
- RCC_Configuration();
- /* USART1 配置模式为 115200 8-N-1,中断接收 */
- uart1_init(115200);
- // uart2_init(9600);
- /* GPIO 配置 */
- // GPIO_Configuration();
- // Adc_Init();
- // TIM2_Configuration();
-
-
- /* 设置NVIC中断分组2:2位抢占优先级,2位响应优先级 */
- NVIC_Configuration();
- /*SysTick 配置*/
- // SysTick_Init(); //10us中断
-
- //禁用JTAG功能
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO时钟
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); /*使能SWD 禁用JTAG*/
-
- //MagSetUp();
- //WKUP_Init();
- //start_wwdg();
- }
复制代码- //系统时钟配置
- void RCC_Configuration(void)
- {
-
- RCC_DeInit();//将外设RCC寄存器重设为缺省值
-
- RCC_HSICmd(ENABLE);//使能HSI
- while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET) //等待HSI使能成功
- {}
- /* 使能flash预读取缓冲区 */
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
-
- /* 令Flash处于等待状态,2是针对高频时钟的,这两句跟RCC没直接关系,可以暂且略过 */
- FLASH_SetLatency(FLASH_Latency_2);
-
- /* HCLK = SYSCLK 设置高速总线AHB的时钟为系统时钟*/
- RCC_HCLKConfig(RCC_SYSCLK_Div1);
-
- /* PCLK2 = HCLK 设置低速总线2(APB2)时钟为高速总线时钟 注意这个值最大为72MHz*/
- RCC_PCLK2Config(RCC_HCLK_Div1);
-
- /* PCLK1 = HCLK/2 设置低速总线1(APB1)的时钟为高速时钟的二分频 注意这个值最大为36MHz*/
- RCC_PCLK1Config(RCC_HCLK_Div2);
-
-
- /* Set PLL clock output to 72MHz using HSE (8MHz) as entry clock */
-
- //设置PLL时钟源倍频系数
- RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2); //内部晶振 (8/2)*2=8MHz,最大8MHz
- RCC_PLLCmd (ENABLE); //使能PLL
- while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLL is ready
- /* Select PLL as system clock source 将锁相环输出设置为系统时钟 此时会真正产生系统时钟*/
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
-
- /* Wait till PLL is used as system clock source 等待校验成功*/
- while (RCC_GetSYSCLKSource() != 0x08);
-
- // SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8
- // fac_us=SystemCoreClock/8000000; //为系统时钟的1/8
- // fac_ms=(u16)fac_us*1000; //非OS下,代表每个ms需要的systick时钟数
- /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
- //使能外围接口总线时钟,注意各外设的隶属情况,不同芯片的分配不同,到时候查手册就可以
- //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
- //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
- // RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
- // RCC_APB2Periph_AFIO, ENABLE);
- //RCC_APB1PeriphClockCmd
-
- }
复制代码 这是系统初始化相关的代码,这些完全是上一个项目移过来的,在STM32F103C8T6上使用完全没问题,然后换成STM32F103RCT6后下载程序就不能运行了(开机我让串口1发数据到串口助手看是否有运行),反复看这时钟配置并没有发现什么问题,有大佬看出来问题吗。
魔法棒我也改了,
然后我尝试使用原子哥的标准库的程序下载发现可以运行正常,
原子哥的程序写着是使用外部晶振,但是我的电路板并没有外接晶振,原子哥的程序为什么能运行?
|
|