OpenEdv-开源电子网

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

F407改F429,延时不对

[复制链接]

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
发表于 2014-12-4 19:55:04 | 显示全部楼层 |阅读模式
5金钱
  以前用的原子的F103战舰,感觉程序很好用,现在买了一个F429想移植原子的F407程序,程序下载可以用,但是时间不对!感觉时间延长了几倍啊~麻烦帮看看啊~

429.zip

986.92 KB, 下载次数: 675

最佳答案

战舰因我而精彩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-4 19:55:05 | 显示全部楼层
正确配置!

429.zip

989.97 KB, 下载次数: 800

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-12-4 19:57:03 | 显示全部楼层
429的时钟配置,是不是和407有区别哦。
另外你的外部晶振是不是8M啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-4 20:25:13 | 显示全部楼层

 

是不是我这是24M啊,我也不知道怎么改啊,407和429这种时钟配置不懂啊,都是用的原子的写好的,自己一般只改里面的,帮帮忙啊!

战舰因我而精彩
回复

使用道具 举报

头像被屏蔽

243

主题

429

帖子

0

精华

禁止发言

积分
1067
金钱
1067
注册时间
2011-12-23
在线时间
17 小时
发表于 2014-12-4 21:08:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-4 21:15:19 | 显示全部楼层
我对照查了,是24M没错,求高手给我配一个比较好的时钟频率,配成168M的
Stm32_Clock_Init(336,24,2,7);//设置时钟,168MHZ
delay_init(168); //初始化延时函数
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-4 21:15:34 | 显示全部楼层
按照我上面的配置,应该是168M才对啊,之后delay就和原子哥的一样了,但是好像用delay时比实际时间长了十倍
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-4 22:13:48 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我看了,我的是24M,但是怎么配置那个函数啊。
Stm32_Clock_Init(336,24,2,7);//设置时钟,168MHZ 
delay_init(168); //初始化延时函数
应该是对的啊,但是我用delay_ms(100);实际上是1s啊
战舰因我而精彩
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-12-4 23:44:32 | 显示全部楼层
回复【7楼】heixinhai:
---------------------------------
 Stm32_Clock_Init(336,24,2,7);,里面的24,这个不是时钟频率啊,大哥。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2014-12-5 08:21:25 | 显示全部楼层
换个8M的晶振试试吧,然后再根据时钟树看看Stm32_Clock_Init(336,24,2,7)里面的各个参数是什么意思
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
发表于 2014-12-5 08:50:04 | 显示全部楼层

我去,你用24M的晶振,按照8M的配置,估计就没初始化,直接默认没倍频跑的。另外,Stm32_Clock_Init这个函数我没用过,我用的是system_stm32f4xx.c里面默认的SystemInit初始化, 直接在汇编中执行的代码。你需要改的地方比较多。delay_init这个函数不应该填上168,f429最高可以到180,除非你一定要倍频到168。这个不是很好讲述……有点复杂,但不难

回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-5 10:32:47 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
那我应该怎么改啊,原子哥
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-5 10:45:57 | 显示全部楼层
回复【10楼】wangxipeng:
---------------------------------
请问我用system_stm32f4xx.c里面函数,频率应该多少合适啊
战舰因我而精彩
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2014-11-28
在线时间
0 小时
发表于 2014-12-5 14:02:43 | 显示全部楼层
可以用CubeMX配置好时钟和外设,直接生产MDK工程嘛,可视化设置,一目了然。


回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
发表于 2014-12-5 16:39:45 | 显示全部楼层
回复【12楼】heixinhai:
---------------------------------
我看了看Stm32_Clock_Init,你试试Stm32_Clock_Init(360,24,2,7);delay_init(180);主频计算公式:PLLN/(晶振频率)/PLLM/PLLP,你可以自己计算下。第二个参数一般是和自己的外部晶振相同,使得 LL_VCO input clock为 1~2MHz,如果还不行,你先试试板子的例程对不对。
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-8 12:51:31 | 显示全部楼层
回复【14楼】wangxipeng:
---------------------------------
非常感谢你!这两天事情比较多,过两天告诉你结果,3ku
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-10 10:06:41 | 显示全部楼层
回复【13楼】Nemo_gg:
---------------------------------
为何不能设置HSE晶振频率啊
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-11 08:27:44 | 显示全部楼层
回复【14楼】wangxipeng:
---------------------------------
我试了,还是不行!不管我怎么改时钟频率都是一样的,比预期的慢10倍,再帮我看看吧,429刚开始,对我比较难,谢谢了!
战舰因我而精彩
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
发表于 2014-12-11 09:10:33 | 显示全部楼层

回复【17楼】 heixinhai :
---------------------------------

u8 Sys_Clock_Set(u32 plln,u32 pllm,u32 pllp,u32 pllq)
{
 u16 retry=0;
 u8 status=0;
 RCC->CR|=1<<16;    //HSE 开启
 while(((RCC->CR&(1<<17))==0)&&(retry<0X1FFF))retry++;//等待HSE RDY
 if(retry==0X1FFF)status=1; //HSE无法就绪
 else  
 {
  RCC->APB1ENR|=1<<28; //电源接口时钟使能
  WR->CR|=3<<14;   //高性能模式,时钟可到168Mhz
  RCC->CFGR|=(0x00000000)|(0x00008000)|(0x00001400); 
  RCC->CR&=~(1<<24); //关闭主PLL
  RCC->LLCFGR=pllm|(plln<<6)|(((pllp>>1)-1)<<16)|(pllq<<24)|(1<<22);//配置主PLL,PLL时钟源来自HSE
  RCC->CR|=1<<24;   //打开主PLL
  while((RCC->CR&(1<<25))==0);//等待PLL准备好 

  PWR->CR |= 0X00010000;

  while((PWR->CSR & 0x00010000) == 0);

  PWR->CR |= 0x00020000;

  while((PWR->CSR & 0x00020000) == 0);
  FLASH->ACR|=1<<8;  //指令预取使能.
  FLASH->ACR|=1<<9;  //指令cache使能.
  FLASH->ACR|=1<<10;  //数据cache使能.
  FLASH->ACR|=5<<0;  //5个CPU等待周期.
  RCC->CFGR&=~(3<<0);  //清零
  RCC->CFGR|=2<<0;  //选择主PLL作为系统时钟 
  while((RCC->CFGR&(3<<2))!=(2<<2));//等待主PLL作为系统时钟成功.
 }
 return status;

仔细对比了下,429的初始化确实和407不一样,建议你还是用库来初始化,我修改了下,你试试吧。函数参数还是我给你的。另外,板子应该有例程吧,你修改下例程看看,原子的是直接操作寄存器的,没研究过寄存器的话直接套用肯定是不行的,尤其是系统频率这块。

回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-11 11:13:50 | 显示全部楼层
回复【18楼】wangxipeng:
---------------------------------
谢谢大哥!我发现我的晶振起不来,配置之后等待晶振用示波器测没有!蒙了!其他都是对的,就是延时长了十倍。
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-11 14:15:32 | 显示全部楼层
回复【18楼】wangxipeng:
---------------------------------
我才查出来,一直是HSI在做系统时钟,dela_init(16);就对了,HSE根本没有正常开启
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-11 16:41:40 | 显示全部楼层
回复【18楼】wangxipeng:
---------------------------------
真心非常感谢你!我把自带的时钟配置文件替换了原子的时钟配置文件,结果可以用了。具体哪个地方错了,还真不知道,谢谢你,你看看吧!
战舰因我而精彩
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
发表于 2014-12-12 09:38:24 | 显示全部楼层
库函数初始化一般不会出错,你测试过我给你的函数了吗?注意红字部分。这块还是等你学一段时间再回来看会好点,现在没必要纠结在这里
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-12-17 23:10:45 | 显示全部楼层
回复【23楼】wangxipeng:
---------------------------------
谢谢,大神!
战舰因我而精彩
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2014-11-28
在线时间
0 小时
发表于 2014-12-18 09:18:39 | 显示全部楼层
回复【16楼】heixinhai:
---------------------------------
我也不清楚什么原因,不知道是不是有BUG。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 09:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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