OpenEdv-开源电子网

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

STM32H750无法延时求助各路大佬

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2020-8-17
在线时间
7 小时
发表于 2020-8-17 10:02:12 | 显示全部楼层 |阅读模式
4金钱
自己画的一张STM32H750板子,使用的是HAL库的模板程序,修改了时钟配置匹配我使用的晶振,但各部分时钟频率保持不变(系统时钟400MHz),编程的时候出现问题:

无论是自己写的延时函数还是HAL_delay都没办法执行延时,一直停留在延时前一句代码。

while(i)
{
    i--;
}
在代码之间插一句这个函数,当i初始值设置为350000时,程序运行通得过这个函数;当i的初始值设置为400000时,程序卡在延时程序无法通过。

在使用ST-Link单步调试的时候,运行到延时函数前步入步过那几个按钮就变成灰色了,无法恢复。

大家有遇到这个问题吗?或者知道是怎么回事?另外芯片摸着估计得有四十几度了,不知道大家是不是也是这样。

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

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2020-8-17
在线时间
7 小时
 楼主| 发表于 2020-8-17 10:56:38 | 显示全部楼层
本帖最后由 huhujiji 于 2020-8-17 16:16 编辑

代码如下:
int main(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        
        uint32_t SysCLK = 0;
        uint32_t i = 370000;
        
  CPU_CACHE_Enable();

  HAL_Init();

  /* Configure the system clock to 400 MHz */
  SystemClock_Config();

        __HAL_RCC_GPIOD_CLK_ENABLE();

        SysCLK = HAL_RCC_GetSysClockFreq();
        
        while(SysCLK != 400000000)
                return 1;
        
        GPIO_InitStruct.Pin=GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
        GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;
        GPIO_InitStruct.Pull=GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOD,&GPIO_InitStruct);
        
        HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13,GPIO_PIN_RESET);
        //HAL_Delay(100);
        while(i)
        {
                i--;        //单步Debug,发现当i数值大,循环完成后卡死,Debug提示cannot access memory
        }

        HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13,GPIO_PIN_SET);
        
        while (1)
  {
                HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_RESET);
                HAL_Delay(500);                   //卡住在这行,不执行下面代码
                HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11,GPIO_PIN_RESET);
                HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET);
                HAL_Delay(500);
                HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11,GPIO_PIN_SET);
  }
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-8-18 00:54:59 | 显示全部楼层
难道是死机了?简化代码看看?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 14:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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