OpenEdv-开源电子网

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

FreeRTOS使用按键中断出现的相关错误Error:..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,441 Error:..\FreeR...

[复制链接]

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-12-9
在线时间
34 小时
发表于 2020-7-29 13:43:58 | 显示全部楼层 |阅读模式
本帖最后由 jiukeshu 于 2020-7-29 13:48 编辑

最近在学习FreeRTOS系统,前期工作参考原子哥的 《STM32F407 FreeRTOS开发手册》,工程编译无错后,按下按键后,出现了Error:..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,441Error:..\FreeRTOS\tasks.c,2806
的错误,后来发现是因为按键中调用的延时函数对freertos时钟调用有冲突,即
  1. void EXTI4_IRQHandler(void)
  2. {
  3.         delay_ms(10);        //消抖
  4.         if(KEY0==0)         
  5.         {                                 
  6.                 LED0=!LED0;        
  7.                 LED1=!LED1;        
  8.                
  9.                 if(BUF_key[1]==1){
  10.                               BUF_key[1]=0;
  11.                               Packet_Sw();                                                                        
  12.                                           }else {
  13.                                     BUF_key[1]=1;
  14.                                        Packet_Sw();
  15.                                                   }
  16.                                                                                        
  17.                   for(i=0;i<=14;i++)
  18.                                         {                                                
  19.                                                 USART_RX_BUF[i]=BUF_Packet[i];  //把指令包中的内容存放到rx的缓冲区中                                                
  20.                                         }                                       
  21.                    for(t=0;t<=14;t++)
  22.                                         {
  23.                                                 USART_SendData(USART1, USART_RX_BUF[t]);         //向串口1发送数据
  24.                                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
  25.                                                 delay_xms(20);
  26.                                         }                                       
  27.                         printf(" \r\n\r\n");//插入换行
  28.                                                 
  29.         }                 
复制代码
其中的“ delay_ms(10);        //消抖”   对freertos时钟调用有冲突将其改为不引起任务调度的函数 delay_xms(10); 后,发送正常。
特此记录。



新建文本文档.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-12-9
在线时间
34 小时
 楼主| 发表于 2020-7-29 13:49:50 | 显示全部楼层
为嘛我的照片不在我想要的位置,555
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 16:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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