g_流浪过 发表于 2019-9-3 11:18:59

STM32CUBIDE 如何实现延时

void delay_us(uint16_t us )
{
      uint16_t differ=0xffff-us-5;
      HAL_TIM_Base_Start(&htim7);
      __HAL_TIM_SetCounter(&htim7,differ);
      while (differ< 0xffff-5)
      {
                differ =__HAL_TIM_GetCounter(&htim7);
      }
      HAL_TIM_Base_Stop(&htim7);

      }
我使用cubemx IDE生成代码进行编译想要实现微妙级的延时,但是代码报错,高亮显示的部分,请教各位一下,这个函数是MDK特有的吗?

奏奏奏 发表于 2019-9-3 11:38:18

你定义配置了定时器7,就是TIM7才能有用呀
也不知道你TIM7的配置参数是否能到微秒级

g_流浪过 发表于 2019-9-3 12:04:55

奏奏奏 发表于 2019-9-3 11:38
你定义配置了定时器7,就是TIM7才能有用呀
也不知道你TIM7的配置参数是否能到微秒级 ...

我定义了定时器7,CUBEMX定义的,但是我的开发环境用的IDE是ST32CubeIDE
然后软件就报错,Description        Resource        Path        Location        Type
undefined reference to `__HAL_TIM_GetCounter'        main.c        /BreathingLight/Src        line 276        C/C++ Problem

zmh169 发表于 2019-9-3 15:01:08

这是求助吗?
“本主题需向作者支付 2 ST金币 才能浏览
本主题购买截止日期为 2019-12-12 11:18,到期后将免费”

g_流浪过 发表于 2019-9-4 15:37:28

zmh169 发表于 2019-9-3 15:01
这是求助吗?
“本主题需向作者支付 2 ST金币 才能浏览
本主题购买截止日期为 2019-12-12 11:18,到期后将 ...

抱歉,没怎么用过,搞错了。哈哈。

g_流浪过 发表于 2019-9-4 15:43:14

g_流浪过 发表于 2019-9-4 15:37
抱歉,没怎么用过,搞错了。哈哈。

已经更正了,问题我也找到了__HAL_TIM_SET_COUNTER
实际的函数是这样的,好像是新版的固件将函数名更改了,和keil5和IAR的可能不太一样。
页: [1]
查看完整版本: STM32CUBIDE 如何实现延时