OpenEdv-开源电子网

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

STM32F407上面跑FreeRTOS,delay_xms(500);延时问题求助!

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-11-22
在线时间
5 小时
发表于 2017-11-22 22:01:02 | 显示全部楼层 |阅读模式
5金钱
使用探索者F4 资料盘(A盘)里面的列子-FreeRTOS实验2-1 FreeRTOS移植实验,修改LED引脚为PC1后,下载到开发板运行,在时间片是1ms的情况下(#define configTICK_RATE_HZ (1000)),按理说delay_xms(500);是延迟500ms,结果开发板上面
的LED是5秒改变一次状态。抱着怀疑的态度,在SysTick_Handler中断里面加入控制其他LED引脚翻转的代码,用示波器看发现
SysTick_Handler这个函数是10ms中断一次,难道#define configTICK_RATE_HZ (1000)这里不是让时间片为1ms吗?请各位大侠
分析一下。谢谢!下面附上关键代码.


时间片中断代码
void SysTick_Handler(void)
{       
    LED1=0;
    if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
    {
        xPortSysTickHandler();       
    }
   LED1=1;
}


//LED0任务函数 =PC1
void led0_task(void *pvParameters)
{
    while(1)
    {
        LED0=~LED0;
        delay_xms(500);
    }
}  

是延时500ms

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

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2017-11-22 22:14:23 | 显示全部楼层
configTICK_RATE_HZ (1000)确实为1ms
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-11-22
在线时间
5 小时
 楼主| 发表于 2017-11-22 22:30:19 | 显示全部楼层
炫色康康 发表于 2017-11-22 22:14
configTICK_RATE_HZ (1000)确实为1ms

但我这里用示波器监测出来为10ms,LED灯5秒转换一次状态也说明是10ms,真是奇葩啊!
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2017-11-22 22:42:15 | 显示全部楼层
这个时间应该是设成configTICK_RATE_HZ (100)了吧
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-11-22
在线时间
5 小时
 楼主| 发表于 2017-11-22 23:00:05 | 显示全部楼层
炫色康康 发表于 2017-11-22 22:42
这个时间应该是设成configTICK_RATE_HZ (100)了吧

已经确认configTICK_RATE_HZ (1000)
回复

使用道具 举报

5

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2015-10-27
在线时间
180 小时
发表于 2017-11-23 08:59:26 | 显示全部楼层
看一下配置的时钟和主频的数值是多少
回复

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-11-23 11:17:07 | 显示全部楼层
时钟频率不对  
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2305
金钱
2305
注册时间
2017-7-6
在线时间
280 小时
发表于 2017-12-15 10:02:40 | 显示全部楼层
你如何证明你的systick中断是10MS一次,仿真过了吗?另外你用delay_xms(500);是直接调用   delay_us(),是不会引发任务调度的。
回复

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2018-1-19 11:40:12 | 显示全部楼层
相信我是启动文件的问题  
我f1也是这样的 ,就只是换了一个启动文件,然后时间延时就不对了  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-1-31 21:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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