OpenEdv-开源电子网

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

阿波罗STM32F429的delay_ms函数不起作用,完全使用的是正点原子的代码,在官方给的源码函数中就有用,自己完全复制就没用

[复制链接]
土豆泥加葱 该用户已被删除
发表于 2017-2-23 10:28:45 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-2-23 10:28:46 | 显示全部楼层
说明你时钟初始化就有问题。
检查你的时钟配置。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-2-23 10:43:28 | 显示全部楼层
那就是你自己的代码有问题,或者自己的配置有问题!一点点调试检查。
回复

使用道具 举报

土豆泥加葱 该用户已被删除
 楼主| 发表于 2017-2-23 12:15:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

14

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-12-11
在线时间
45 小时
发表于 2017-2-23 19:01:40 | 显示全部楼层
把keil5卸载了重装试试
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2016-12-2
在线时间
21 小时
发表于 2017-3-11 15:59:32 | 显示全部楼层
土豆泥加葱 发表于 2017-2-23 12:15
单步调试就会卡死在delay_ms函数里面

我的也是在delay_ms里面出不来,请问你怎么解决的这个问题?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-6-22
在线时间
0 小时
发表于 2019-6-22 11:31:44 | 显示全部楼层
PIPIXIU 发表于 2017-3-11 15:59
我的也是在delay_ms里面出不来,请问你怎么解决的这个问题?

卡死在delay_ms函数里,你解决了?我也遇到这问题。搞不定
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-6-22
在线时间
0 小时
发表于 2019-6-22 12:43:13 | 显示全部楼层
搞定了,系统文件全部用范例程序的,跟着视频教程走用STM32参考资料会有这问题。另外工程建完后再把范例程序复制进去替换也是不行的。这个具体原因还不清楚,不懂是不是因为STM32参考资料里面的资料比较旧还是比较新造成的?
回复

使用道具 举报

8

主题

18

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-11-4
在线时间
5 小时
发表于 2019-12-26 16:39:29 | 显示全部楼层
void Delay(__IO uint32_t nCount)
{
  while(nCount--){}
}

int main(void)
{

        GPIO_InitTypeDef GPIO_Initure;
     
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    //delay_init(180);
       
    __HAL_RCC_GPIOB_CLK_ENABLE();           //开启GPIOB时钟
       
    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);

        while(1)
        {
                HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);        //PB1置1
                HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);        //PB0置1                         
                Delay(0x7FFFFF);
               
                HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);        //PB1置0
                HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);        //PB0置0  
                Delay(0x7FFFFF);
        }
        }
回复

使用道具 举报

8

主题

18

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-11-4
在线时间
5 小时
发表于 2019-12-26 16:43:40 | 显示全部楼层
这个是库函数工程模板中的delay方法,用这个LED可正常闪烁,库函数例程中的跑马灯代码下载到429板卡上也可以跑,但在上述代码中把delay函数注释掉,改用delay_ms就不行,是还需该其它地方?
回复

使用道具 举报

8

主题

18

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-11-4
在线时间
5 小时
发表于 2019-12-26 17:04:23 | 显示全部楼层
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_GPIOB_CLK_ENABLE();           //开启GPIOB时钟
       
    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
       
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);        //PB0置1,默认初始化后灯灭
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);        //PB1置1,默认初始化后灯灭
}
int main(void)
{
       
        HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    LED_Init();                     //初始化LED  
    while(1)
    {
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET); //LED0对应引脚PB1拉低,亮,等同于LED0(0)
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);   //LED1对应引脚PB0拉高,灭,等同于LED1(1)
        delay_ms(500);                                                                                //延时500ms
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);   //LED0对应引脚PB1拉高,灭,等同于LED0(1)
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); //LED1对应引脚PB0拉低,亮,等同于LED1(0)
        delay_ms(500);                                      //延时500ms
    }
}

把库函数跑马灯试验程序粘贴到新建库函数工程模板的工程里,将LED函数也写在main.c文件里,也不行。两个工程有区别?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-7-5
在线时间
7 小时
发表于 2019-12-30 13:04:35 | 显示全部楼层
怎么解决呀
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2015-11-27
在线时间
12 小时
发表于 2020-2-8 19:38:12 | 显示全部楼层
我的也是,用的正点原子的STM32F429开发板,但是在工程模板的基础上,改成LED的例程,delay_ms()函数出不来……找了两天了,还没找到原因,同求
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-7-19
在线时间
3 小时
发表于 2020-7-22 18:32:46 | 显示全部楼层
我今天也遇到了这个问题,用自己建的按照视频里的方法做的HAL模板库就是不能用delay_ms(),而完全用示例代码的可以用delay_ms()
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2019-9-4
在线时间
4 小时
发表于 2020-8-6 11:49:30 | 显示全部楼层
jinyuhang14 发表于 2020-7-22 18:32
我今天也遇到了这个问题,用自己建的按照视频里的方法做的HAL模板库就是不能用delay_ms(),而完全用示例代 ...

注意HAL_Init(); //初始化HAL库  会初始化Systick 1ms 中断一次  中断函数在stm32f4xx_it.c中
你肯定用的不用版本的HAL驱动,其他驱动会导致Systick 重载值为零,中断使能不打开,重新定义下Systick的重载值即可
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-3-10
在线时间
8 小时
发表于 2021-3-19 07:55:25 来自手机 | 显示全部楼层
tim用法
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 17:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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