初级会员
- 积分
- 55
- 金钱
- 55
- 注册时间
- 2019-12-9
- 在线时间
- 34 小时
|
本帖最后由 jiukeshu 于 2020-7-29 13:48 编辑
最近在学习FreeRTOS系统,前期工作参考原子哥的 《STM32F407 FreeRTOS开发手册》,工程编译无错后,按下按键后,出现了Error:..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,441Error:..\FreeRTOS\tasks.c,2806
的错误,后来发现是因为按键中调用的延时函数对freertos时钟调用有冲突,即
- void EXTI4_IRQHandler(void)
- {
- delay_ms(10); //消抖
- if(KEY0==0)
- {
- LED0=!LED0;
- LED1=!LED1;
-
- if(BUF_key[1]==1){
- BUF_key[1]=0;
- Packet_Sw();
- }else {
- BUF_key[1]=1;
- Packet_Sw();
- }
-
- for(i=0;i<=14;i++)
- {
- USART_RX_BUF[i]=BUF_Packet[i]; //把指令包中的内容存放到rx的缓冲区中
- }
- for(t=0;t<=14;t++)
- {
- USART_SendData(USART1, USART_RX_BUF[t]); //向串口1发送数据
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
- delay_xms(20);
- }
- printf(" \r\n\r\n");//插入换行
-
- }
复制代码 其中的“ delay_ms(10); //消抖” 对freertos时钟调用有冲突将其改为不引起任务调度的函数 delay_xms(10); 后,发送正常。
特此记录。
|
|