记录一下使用HC(S)12单片机开发freertos项目遇到的问题

问题1 堆栈大小设置异常的问题

在这里插入图片描述
这里是设置总堆大小的,通过freertos_config文件也能更改,不过PE修改后,会覆盖它,所以一般就在PE中修改,其他配置项默认就行,以这里2048字节为例,如果在创建任务的时候给任务的的栈分配空间超过这个值,则会创建任务失败,进入FRTOS1_vApplicationMallocFailedHook回调,比如下面我下面两个任务在这里插入图片描述
分配的栈深度是200+100个单元也就是30022=1200个字节,这是两个任务创建的时候给他们的栈空间大小,此大小如果超过或等于总堆大小,都会导致任务创建失败,亦或者是程序运行过程中任务动态获取内存也会失败,所以尽量留一些空间。

问题2 关于使用调试器遇到的坑

在程序一切配置都没问题的情况下,使用调试器调试,会发现两个任务运行起来后,去执行vTaskDelay(1000/portTICK_RATE_MS)系统延时,进入阻塞态后,程序从开始运行会直接跳转到下图,我现在也没搞懂,为啥会进入这里在这里插入图片描述
现在直接关闭调试器,重启单片机,发现程序是正常按照逻辑执行,嘿嘿嘿,他娘的,你能信,使用调试器的时候,单片机就像是直接休眠了一样。
问题2 后面发现并不是调试器的问题,而是自己FreeRTOS环境配置的问题,是由于系统的软件中断配置错误导致的,如下图
在这里插入图片描述
由于上下文切换这里的软件中断没有配置成Vswi软件中断,导致程序无法响应此软件中断,在这里插入图片描述
也就无法执行上下文切换,导致程序运行一次就结束了,使能此软件中断就行了,具体的还得学习freertos上下文切换机制
问题3 使用PE自带的模块freertos_task,在main函数中的PE_low_level_init()函数中,会自动生成任务创建函数在这里插入图片描述
如果,自己再在main当中去调用TSK1_CreateTasks,就会产生任务重复创建的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值