OpenEdv-开源电子网

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

求解:为什么使用startup_stm32f10x_md.s,Systick延时扩大9倍?

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-12-18
在线时间
4 小时
发表于 2020-3-12 08:50:00 | 显示全部楼层 |阅读模式
1金钱
关于systick延时问题,请教高手:
----------------------------------
硬件:STM32F103C8T6;软件:使用原子精英板全套模板,仅仅将startup_stm32f10x_hd改为startup_stm32f10x_md

问题:无论是软件仿真,还是下载到板子实际测量,Systick延时扩大9倍。(如:delay_ms(500);实际测量延时4.5s)
----------------------------------
请路过的高手帮忙解答,这个坎一直过不去

最佳答案

查看完整内容[请看2#楼]

时钟没配置对,可能你跑的是8M,但是是以72M来延时的,自然时间就长了9倍。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-3-12 08:50:01 | 显示全部楼层
时钟没配置对,可能你跑的是8M,但是是以72M来延时的,自然时间就长了9倍。
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-12-18
在线时间
4 小时
 楼主| 发表于 2020-3-13 11:14:41 | 显示全部楼层
谢谢原子哥回复。
但是还是没有找到根因,同样的工程文件,仅仅修改startup_stm32f10x_hd改为startup_stm32f10x_md,为什么会出现时钟没配置对?还是说针对startup_stm32f10x_md文件需要特别做一些修改?
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3879
金钱
3879
注册时间
2017-3-7
在线时间
1692 小时
发表于 2020-3-13 12:33:30 | 显示全部楼层
我记得寄存器版和库函数的startup_stm32f10x_hd都不太一样,里面有时钟配置相关的,可以去看看
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-12-18
在线时间
4 小时
 楼主| 发表于 2020-3-13 14:24:07 | 显示全部楼层
把 startup_stm32f10x_md 如下代码开启就OK了,不懂什么原因。
;IMPORT  SystemInit                       
                ;LDR     R0, =SystemInit       
                ;BLX     R0  
改为:
                IMPORT  SystemInit                       
                LDR     R0, =SystemInit       
                BLX     R0  
回复

使用道具 举报

16

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2016-12-21
在线时间
142 小时
发表于 2020-3-13 15:50:32 | 显示全部楼层
会不会是外部晶振有问题,切换到内部晶振了
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2020-3-13 16:07:21 | 显示全部楼层
王桂才 发表于 2020-3-13 14:24
把 startup_stm32f10x_md 如下代码开启就OK了,不懂什么原因。
;IMPORT  SystemInit                       
                ...

这段是STM32的汇编启动代码,单片机运行前首先会运行这段代码,汇编前面加分号就相当于C语言的注释//,你把SystemInit代码都屏蔽掉了,当然你的系统时钟会不对了
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-12-18
在线时间
4 小时
 楼主| 发表于 2020-3-18 16:35:37 | 显示全部楼层
天空淡云 发表于 2020-3-13 16:07
这段是STM32的汇编启动代码,单片机运行前首先会运行这段代码,汇编前面加分号就相当于C语言的注释//,你 ...

谢谢指导,再请教下:startup_stm32f10x_hd 文件此部分也是注释掉的,但是没问题?求解。
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2020-3-18 18:30:05 | 显示全部楼层
加上 SystemInit() ,可以在启动文件加,也可以在main函数第一句加上。
茵茵猪头
回复

使用道具 举报

0

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2019-12-26
在线时间
134 小时
发表于 2020-3-26 13:34:34 | 显示全部楼层
那句复位函数是在程序启动时第一个运行的,寄存器没有SystemInit,所以注释掉,我们是在外部自己添加的时钟初始化函数
库函数是带SystemInit的,所以这句不需要注释,复位后直接初始化掉时钟
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 18:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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