OpenEdv-开源电子网

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

延时函数不对

[复制链接]

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-8-18 14:08:43 | 显示全部楼层 |阅读模式
3金钱
单片机型号:STM32F415VG,使用外部8M晶振,设置系统时钟为168M用原子哥的us级延时函数延时500us,但实测为1.5ms,这是为什么,哪里我没考虑到?
void delayus(u32 nus)
{
        u32 temp;
        SysTick->LOAD  = nus*21;
        SysTick->VAL   = 0x00;
        SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
        do
        {
                temp = SysTick->CTRL;
        }
        while((temp & 0x01)&& (!(temp & (1 << 16))));
        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
        SysTick->VAL   = 0x00;
}


最佳答案

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

找到问题了,系统时钟没设置好,在system_stm32f4xx.c和stm32f4xx.h里面重新设置了系统时钟就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-18 14:08:44 | 显示全部楼层
找到问题了,系统时钟没设置好,在system_stm32f4xx.c和stm32f4xx.h里面重新设置了系统时钟就好了
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-18 14:30:44 | 显示全部楼层
用示波器检查一下晶振的实际运行频率?我之前买东西有个sb店家给我发了16M晶振,我都装机了后来测试不正确,延时1s结果只有0.5s.

如果没有条件使用示波器可以尝试使用下串口,如果单片机配置为115200波特率,但是在串口助手使用115200却接收不到数据或者乱码,调成38400反而可以的话,晶振出现问题的可能性很大。

当然也有其他的可能性,仅供参考。
十六进制带我飞。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-18 14:44:06 | 显示全部楼层
DreamWaterPro 发表于 2018-8-18 14:30
用示波器检查一下晶振的实际运行频率?我之前买东西有个sb店家给我发了16M晶振,我都装机了后来测试不正确 ...

测过了,晶振是8M
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 05:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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