OpenEdv-开源电子网

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

FreeRTOS+STM32F103移植问题请教

[复制链接]

0

主题

0

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-12
在线时间
4 小时
发表于 2019-12-9 11:28:14 | 显示全部楼层 |阅读模式
本帖最后由 DengHongun 于 2019-12-9 13:58 编辑

实验简述:USART1通过接收中断接收电脑发过来的单个字符,并在中断中调用“”xQueueSendFromISR“”发送到Message_Queue队列中去。TIM2定时500ms更新中断,在中断中读取Message_Queue中的消息,如果队列Message_Queue中有消息,就读出来并通过USART1发送到电脑显示屏上。
Debug中出现的问题:每次Debug都会产生UsageFault导致的HardFault。经反复验证,是TIM2中断中定义了一个char  message_receive变量,此变量用来存放从队列Message_Queue中读到的信息这里有问题。(这里用malloc给变量message_receive分配一块内存去存放读到的信息,用完后再释放掉就可以了)虽然问题点和解决方法已经找到,单产生这个问题的原因尚不理解,望大神能指点一二。代码如下:

void TIM2_IRQHandler(void)
{
        char message_receive;
        BaseType_t  HigherPriorityTaskWoken = pdFALSE;
       
        if( xQueueReceiveFromISR(Message_Queue,&message_receive,&HigherPriorityTaskWoken) )
        {
                printf("500ms中断扫描到串口有接收到的信息,信息如下:\t\t\r\r\n\n");
                printf("信息是:  %c\t\t\r\r\n\n",message_receive);
        }

        portYIELD_FROM_ISR(HigherPriorityTaskWoken);
       
        TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}


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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 22:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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