OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5963|回复: 4

关于stm32f407时钟配置出问题了,不知道哪位大佬帮忙看一下

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-7-16
在线时间
6 小时
发表于 2021-7-20 22:53:28 | 显示全部楼层 |阅读模式
1金钱
@正点原子
  1. int systime_int()
  2. {
  3.         int countnumber=40000;
  4.        
  5.         RCC->CR |=(uint32_t)(1<<16);
  6.         do
  7.         {
  8.                 countnumber--;
  9.         }while((!(RCC->CR & (uint32_t)0x20000))|| countnumber );
  10.         if(RCC->CR & (uint32_t)0x20000)       
  11.         {
  12.                 //FLASH_SetLatency(FLASH_Latency_5);
  13.                 RCC->PLLCFGR |=(uint32_t)(1<<3);//pllm
  14.                 RCC->PLLCFGR |=(uint32_t)(0x150<<6);//plln
  15.                 RCC->PLLCFGR |=(uint32_t)(0x40<<16);//pllp
  16.                 RCC->PLLCFGR &=(uint32_t)(4<<24);//pllq
  17.                
  18.                 RCC->CFGR |=(uint32_t)(0x0<<4);//ahb
  19.                 RCC->CFGR |=(uint32_t)(1<<15);//apb2
  20.                 RCC->CFGR |=(uint32_t)(1<<12);//apb1
  21.                 RCC->CFGR |=(uint32_t)(1<<10);//apb1
  22.                 RCC->CFGR |=(uint32_t)(1<<19);
  23.                 RCC->CFGR |=1<<1;
  24.         }
  25.         else
  26.         {
  27.                 return 0x07;//外部震荡器使能失败;
  28.         }
  29.         RCC->CR|=(uint32_t)(1<<24);
  30.         countnumber=40000;
  31.         do
  32.         {
  33.                 countnumber--;
  34.                
  35.         }while((!(RCC->CR & 0x2000000)) || countnumber );
  36.         countnumber=40000;
  37.         do
  38.         {
  39.                 countnumber--;
  40.         }while(!(RCC->CFGR &(uint32_t)0x08) || countnumber);
  41.         if(RCC->CFGR &(uint32_t)0x08)       
  42.         {
  43.                 FLASH_SetLatency(FLASH_Latency_5);
  44.                 return 0x01;//pll成功
  45.         }
  46.         else
  47.         {
  48.                 return 0x02;//pll失败
  49.         }

  50. }
复制代码
代码如上,用标准库写的,gpio驱动不起来
经过调试rcc->cr = 0x03038183
rcc->pllcfgr =0x04405408
rcc->cfgr= 0x0008940A
main.c如下
  1. int main()
  2. {
  3.        
  4.         GPIO_InitTypeDef *hgpiog;

  5.         hgpiog->GPIO_Pin=GPIO_Pin_13;
  6.         hgpiog->GPIO_Mode=GPIO_Mode_OUT;
  7.         hgpiog->GPIO_OType=GPIO_OType_PP;
  8.         hgpiog->GPIO_PuPd=GPIO_PuPd_UP;
  9.         hgpiog->GPIO_Speed=GPIO_Speed_100MHz;
  10.        
  11.         systime_int();
  12.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
  13.         SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
  14.        
  15.         GPIO_DeInit(GPIOG);
  16.         //RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  17.         GPIO_Init(GPIOG,hgpiog);
  18.         //USART_Init(USART1,huart);
  19.         while(1)
  20.         {
  21.                 //GPIO_WriteBit(GPIOG,GPIO_Pin_13,Bit_SET);
  22.                 GPIO_WriteBit(GPIOG,GPIO_Pin_13,Bit_RESET);
  23.         }
  24.        
  25. }
复制代码
求大佬看一下,啥地方出问题了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2021-7-21 10:28:31 | 显示全部楼层
回复

使用道具 举报

4

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-11-12
在线时间
77 小时
发表于 2021-7-21 10:55:42 | 显示全部楼层
你配置的顺序错了,找个对的模板参考下吧
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-7-16
在线时间
6 小时
 楼主| 发表于 2021-7-21 11:10:01 来自手机 | 显示全部楼层
nstopb 发表于 2021-7-21 10:55
你配置的顺序错了,找个对的模板参考下吧

谢谢,我再找个模板看看
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-7-16
在线时间
6 小时
 楼主| 发表于 2021-7-22 00:05:48 | 显示全部楼层
有些时钟没有打开,我对比了其他能够顺利运行的时钟配置,ahb使能里有sys寄存器要打开,apb里有个p.....寄存器要打开,还有一些时钟要使能,手动配置过于复杂了,还是用库巴。不过经过这一次手动配置学到很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 08:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表