之前裸机emWin成功了,接下来尝试CubeMx FreeRTOS emWin,又遇到三个坑。

先说第一个坑:

我直接再之前裸机的工程上增加FreeRTOS,结果生成程序后,编译报一大堆错误,分析了一下错误实在是无从下手,因此怀疑CubeMx有问题,因此我就将Keil工程文件夹全部删除,再重新生成。再次编译情况好转,但是还是不少错误。这是第二个坑!

第二个坑:

CubeMx配置FreeRTOS选项中有2个版本,分别是CMSIS_V1和CMSIS_V2 。我看到选项自然是选高版本,结果生成程序后编译报一大堆错误(如下图),查了半天也不好解决。关键是我个人认为既然是软件自动生成的,不应该需要我来改动,否则编程过程中后续再修改配置有可能会出错。所以不得不换CMSIS_V1。

换CMSIS_V1后编译通过,于是尝试添加触摸功能,这时又遇到了第三个坑。

第三个坑:

我在OS中增加了一个软定时,准备用来轮询读取触摸坐标,结果发现程序无法进入定时器回调函数。又是一遍遍的排查。中间做了多少啥事就不表了,最后发现问题所在,先看代码:

1、freertos.c中的代码:

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{

/* Graphic application */  
  GRAPHICS_MainTask();    //此处调用了GUI_App.c中的主函数

/* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
        HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
    osDelay(100);
  }
  /* USER CODE END StartDefaultTask */
}

2、GUI_App.c

void GRAPHICS_MainTask(void) {

/* 2- Create a Window using GUIBuilder */
  CreateWindow();
 
/* USER CODE BEGIN GRAPHICS_MainTask */
 /* User can implement his graphic application here */
  /* Hello Word example */
    GUI_Clear();
    GUI_SetColor(GUI_WHITE);
    GUI_SetFont(&GUI_Font32_1);
    GUI_DispStringAt("Hello world!", (LCD_GetXSize()-150)/2, (LCD_GetYSize()-20)/2);
   
/* USER CODE END GRAPHICS_MainTask */
  while(1)
{
      GUI_Delay(100);
}
}
红色部分while(1)死循环造成问题。将这部分程序注释关闭后,程序运行正常。但是我增加了触摸屏程序后,发现无法触摸。于是在上面红色while循环中加入了一条LED GPIO反转语句,发现LED没有变化,判定是程序运行到这里死机了。个人感觉应该和做裸机程序遇到的情况类似,于是尝试加大DefaultTask的static size,设置未512,再运行程序正常。触摸屏幕上大按钮可以切换显示窗体。

虽然网上有很多人不喜欢CubeMX,但是我个人认为它还是不错的,毕竟让我们减少了很多工作量,让我们可以把更多的精力放在应用层上,而不用为设置底层驱动大费周章。只是我们开始用的时候,从标准库转过来不习惯。另外确实CubeMX也有一些BUG,但是毕竟它一直在升级,相信会越来越好。

STM32f429 CubeMx FreeRTOS emWin (Cubemx有BUG)相关推荐

  1. 基于stm32F103HAL库+cubemx+freertos无感无刷电机BLDC控制程序开发

    基于stm32F103HAL库+cubemx+freertos无感无刷电机BLDC控制程序开发 最近在做一个舵机控制项目,控制对象为大功率无感无刷电机,网上搜遍了资源,貌似这方面的资源真得十分匮乏.大 ...

  2. keil工程 freertos+emwin AC5编译器移植到AC6编译器

    keil工程 freertos+emwin AC5编译器移植到AC6编译器 本文基于正点原子的rtos工程进行移植. 打开工程,将其更换为AC6编译器,然后点击编译 编译完成之后,如下图,可以看到有很 ...

  3. CUBEMX+FreeRTOS使用ArmComplier6(AC6)编译器的设置方法

    最新的 KEIL MDK 5.37版本不再内置ArmComplier5(AC5)编译器, 笔者决定尝试将cubemx生成的FreeRTOS工程迁移至ArmComplier6(AC6)编译器.由于AC5 ...

  4. CubeMX C6T6有关IIC的bug

    项目场景: 板子是STM32F103C6T6的最小系统板,STM32CubeMx版本是6.5.0,生成MDK工程 问题描述 使用STM32CubeMx生成的STM32F103C6T6 IIC的初始化代 ...

  5. 单片机 STM32F103C8T6 cubeMX HAL库 从环境到开发 正点原子工程移植 freeRTOS

    文章目录 0 准备材料 1 闪烁PC13的小灯 2 正点原子工程移植 注意点以及细节 3 freeRTOS 3.1 LED KEY 串口1 的一个实验 0 准备材料 1.需要正点原子的HAL介绍书籍可 ...

  6. linux i2c dev.h freq,STM32F103ZET(基于秉火开发板)+Cubemx(F1 V1.60库)+IIC+AT24C02(修复官方例程读写死机bug)...

    首先说明下开发条件: 1.开发板:秉火霸道,STM32F103ZET 2.软件:Cubemx V4.23(F1 V1.60库) 3.硬件:AT24C02 256KByte 问题描述:Cubemx生成I ...

  7. 开发板 C 型,cubeMX 与 keil 入门

    目录 知识要点 课程内容 基础学习 程序学习 软件环境 cubeMX 新建工程 keil 软件简易入门 Keil 的调试模式 RoboMaster 机器人功能简介 课程总结 知识要点 开发板 C 型出 ...

  8. Ubuntu18.04 :cubeMx + vscode+stLink 踩坑

    Ubuntu18.04 :cubeMx + vscode+stLink cubemx 安装 vscode 安装 cubemx 生成项目 1. 编译 更新: 重启终端后失效 2 安装openocd 3 ...

  9. Windows环境下CubeMX+VScode+Gcc+OpenOCD开发STM32环境搭建

    为啥要这么麻烦嘛,这个不解释,生命在于折腾,相信很多人都在折腾,也很多人去百度过,按百度的教程估计还是有很多人不会弄,所以写这篇教程为那些还没有折腾成功的砖工提供点线索. VScode现在真的很强大, ...

最新文章

  1. android doGet和doPost
  2. 7. Vulnerability exploitation tools (漏洞利用工具 11个)
  3. 【Verilog HDL 训练】第 05 天(序列检测)
  4. 通过ping命令测试主机与虚拟机之间是否连通
  5. 学习:多项式算法----FFT
  6. 有限覆盖定理证明区间套_圆内整点问题的开普勒猜想证明,关于圆内整点问题误差项的估值E(r)=1-x,x=sin(nx)...
  7. Android学习笔记(十三)
  8. [Web Chart系列之二] 各种实现js 图表的library汇总与比较
  9. JavaScript学习(二十二)—动态创建表格
  10. 关于u8, u16, u32, u64
  11. Spring Bean的加载过程以及一些生命周期
  12. Django菜鸟教程学习记录(一)
  13. 密码学的基础:X.690和对应的BER CER DER编码
  14. 联想台式机快捷键(F1~F12)取消按Fn,设置为标准功能键
  15. React使用高德地图
  16. linux子系统的控制台打开方法
  17. linux下上传系统中文件到gitHub
  18. html5考试总结300字,期末考试总结反思300字
  19. 江苏省的计算机二级考试c语言
  20. Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等

热门文章

  1. 计算机考试在线考试答案2019,2019石油华东《计算机应用基础》在线考试(答案)...
  2. 爬虫 | 王者荣耀高清壁纸-多线程
  3. 理财入门:财务报表(简单介绍,后续入门系列文章写完后,会写实践文章在详细介绍)
  4. 若微型计算机在工作时突然断电,北语网院20春《计算机基础》作业_1234
  5. 【Vissim】做一次完整的交通仿真——1.基本认识
  6. java计算三角形面积和周长
  7. fh admin mysql版本_在用mysql-front的时候遇到显示:程序注册时间到期程序将被限制模式下运行。...
  8. 博后招募 | 广州国家实验室闵明玮课题组诚聘博士后、副研究员和研究实习员...
  9. 在python中gevent monkey_patch 出现Monkey-patching may lead to errors解决
  10. 网页版linux客户端,网页版微信将关闭,Linux开发者哭惨