STM32F207的定时us问题

sf9090 2021-02-19 09:27:48
void delay_s(int x)
{
__HAL_RCC_TIM1_CLK_ENABLE();
TIM1->ARR = x*10-1;
TIM1->PSC = 11999;
TIM1->EGR = TIM_EGR_UG;
TIM1->CR1 = TIM_CR1_OPM | TIM_CR1_CEN;
while(TIM1->CR1 & TIM_CR1_CEN);
}
大佬们 请问我使用STM32F207单片机时,使用延时函数为什么 不准了。上面这个是我设置的1s, f2是120mzh
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sf9090 2021-02-21
  • 打赏
  • 举报
回复
学校大佬学长的讲解
sf9090 2021-02-21
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
你使用TIM_CR1_CEN位做判断肯定有问题,那个是定时器使能位,不是定时器时间到标志位!!! 为什么systick不行?没有Freertos也是同样使用,但前提是你要把systick运行起来
我好似知道了,我外接的8MHZ, hal_conf.h中没有修改 原本是25Mhz, 还有就是 我没有对PLL和HSE配置,以前F1不需要配置
worldy 2021-02-20
  • 打赏
  • 举报
回复
你使用TIM_CR1_CEN位做判断肯定有问题,那个是定时器使能位,不是定时器时间到标志位!!! 为什么systick不行?没有Freertos也是同样使用,但前提是你要把systick运行起来
sf9090 2021-02-20
  • 打赏
  • 举报
回复
引用 1 楼 worldy的回复:
while(TIM1->CR1 & TIM_CR1_CEN);你这个判断对吗?
之前我设置延时都是这么弄的,用的F1系列的。当定时器关闭退出循环。大佬,应该怎么设置在F2。systick延时不行,Freertos中延时使用的是systick
worldy 2021-02-20
  • 打赏
  • 举报
回复
while(TIM1->CR1 & TIM_CR1_CEN);你这个判断对吗?
sf9090 2021-02-20
  • 打赏
  • 举报
回复
哦,我最后一句换一个Uif试试,但是之前可以。 systick不能用是因为freertos使用的systick。我在改改,谢谢大佬

27,381

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧