关于由CubeMx生成stm32f4+freertos,不正常分析之堆栈大小设置

2019-08-23来源: eefocus关键字:CubeMx  stm32f4  freertos  堆栈  设置

freertos官方手册上有说,移植中出现的问题大多数是由堆栈设置不合理造成的,今天结合自身遇到问题分析一下


1.任务堆栈设置过小,很容易造成硬件溢出,跳转到void HardFault_Handler(void);


调试方法,可以通过调用函数,UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );来跟踪剩余堆栈,


不过在CubeMx中的Configuration->FreeRtos->Include parameters中使能uxTaskGetStackHighWaterMark函数;


2.整体设置过小,TOTAL_HEAP_SIZE(Configuration->FreeRtos->Config parameters)


通常来说。TOTAL_HEAP_SIZE设置过小,会在生成函数的时候报错,但是我遇到的问题是,并没有报错,只是程序运行部正常,


在把某个任务的堆栈有256设置成128之后,程序正常。之后将TOTAL_HEAP_SIZE设大,任务设回到256,程序也正常


关键字:CubeMx  stm32f4  freertos  堆栈  设置

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic472319.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定时器
下一篇:【STM32F103】中断综述

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32CubeMx-ADC

本章通过两个例程介绍STM32的模数转换器(ADC),第一个通过ADC采集内部温度传感器通道电压,然后得出MCU内部温度。第二个通过DMA的方式采集两个ADC通道电压。1.ADC本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击xxx.ioc打开STM32cubeMX的工程文件重新配置。ADC1外设选择温度传感器通道。ADC1配置如下,选择默认设置。其Date Alignment设置为数据右对齐; 采样时间 239.5周期。对于每个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降低 ADC 的转换速率。 ADC 的转换时间可以由以下公式计算:Tcovn=采样时间+12.5
发表于 2019-09-11
STM32CubeMx-ADC

STM32HAL库学习(二)CubeMx按键

();HAL_GPIO_WritePin();将自己的代码放入一个文件夹,在下一次复制修改CubeMx从新生成code时,不会被重置。将各个外设的驱动单独写.c .h文件,自己写一个system程序,作为主程序,每次重置后就在main中放入my_system的头文件,init和主函数就行,在魔术棒中编译路径中加入自己的文件夹。
发表于 2019-09-11
STM32HAL库学习(二)CubeMx按键

STM32学习|点亮LED灯

所用软件:STM32CubeMXkeil 5所用硬件:STM32F4VET6+LED+510R一、使用STM32CubeMX生成工程①打开CubeMX,新建Project②选择所用的型号,双击创建二、对所使用的SYS和GPIO进行配置①选择各功能对应的模式,当用st-link进行调试时,SYS选择SW模式,RCC选择使能HSE外部时钟,PA6配置为推挽输出模式②配置GPIO的初始化三、对工程生成进行设置并生成①设置工程名称、保存的位置,以及所用平台②生成工程代码四、打开生成的MDK文件①找到MDK文件,打开②通过Keil 5 Rebuild和Download,单片机就可以点亮Led了。附上led电路图和实物图
发表于 2019-09-11
STM32学习|点亮LED灯

STM32 CubeMX按键中断

中断向量嵌套中断:中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。如果中断里调用HAL_Delay就会停在那里,因为根本不会进入那个级别更低的中断。CUBE生成的程序中, SysTick是中断型延时,SysTick是内核中断,优先级别默认最低。三、STM32按键按键需要上拉电阻,当按键按下时接到地,CPU读取出低电平知道按键按下。Priority Group默认为4,抢占优先权有2^4(0~15)可选而响应优先权只能是0;为3时,抢占优先权有2^3(0~7)可选
发表于 2019-09-06
STM32 CubeMX按键中断

使用STM32CubeMX 图形配置工具生成STM32 工程代码

STM32CubeMX 教程简介:STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具,允许用户使用图形化向导生成 C 初始化代码。其特性如下:直观的选择 MCU 型号,可指定系列、封装、外设数量等条件;微控制器图形化配置;自动处理引脚冲突;动态设置时钟树,生成系统时钟配置代码;可以动态设置外围和中间件模式和初始化;功耗预测;C 代码工程生成器覆盖了 STM32 微控制器初始化编译软件,如 IAR,KEIL,GCC;可以独立使用或者作为 Eclipse 插件使用。注意:STM32Cube包含 STM32CubeMX 图形工具和 STM32Cube 库两个部分,使用 STM32CubeMX
发表于 2019-08-29
使用STM32CubeMX 图形配置工具生成STM32 工程代码

关于STM32f103 SPI时钟速度的问题

STM32f103 中APB1的最高频率是36MHz,APB2的最高频率是72MHz,而PCLK1和PCLK2一般也默认配置为其最高工作频率36M和72M。如下图(STM32F10xx_参考手册(第7版) 第46页)时钟树所示:SPI1时钟由APB2时钟分频而来,可以选择2、4、8、16、32、64、128、256这几个分频系数。而手册规定STM32的SPI时钟最快是18MHz。对于STM32F103的SPI1接口时钟,由72M的PCLK2分频得到,所以分配系数大于等于4(72M/4 = 18M)。对于STM32F103的SPI2/SPI3接口时钟,由36M的PCLK1分频得到,所以分配系数大于等于2(36M/2 = 18M
发表于 2019-09-12
关于STM32f103 SPI时钟速度的问题

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved