STM32F4应用笔记(五)UCGUI+uC/OS-II+支持触摸屏
来源:互联网 发布:template.js helper 编辑:程序博客网 时间:2024/06/06 09:29
移植uC/OS-II
我们以上一篇工程为基础,进行移植。然后我们还需要用到正点原子F4【实验56 UCOSII实验1-任务调度】的代码,将实验56工程下的UCOSII文件夹直接复制到我们上一篇建立的工程文件夹下,然后在工程目录中添加对应的文件夹以及C文件,最后添加头文件路径。
添加及修改GUI_X_uCOS.c文件
在工程目录的GUI_X文件夹中添加GUI_X_uCOS.c文件,并修改2处:
void GUI_X_ExecIdle (void)
{
//OS_X_Delay(1);
OSTimeDly(50);
}
原来是OS_X_Delay(1);会提示没定义,所以改一下。
此外,
static void CheckInit (void)
{
if (KeyIsInited == 0) {
KeyIsInited = 1;
GUI_X_Init();
}
}
本来一个是FALSE,一个是TRUE,然后提示我FALSE和TRUE未定义,所以这么改。
修改GUI_X.c
不修改会提示和GUI_X_uCOS.c文件出现重定义错误。把GUI_X.c文件中的除了最后
void GUI_X_Log (const char *s) { GUI_USE_PARA(s); }
void GUI_X_Warn (const char *s) { GUI_USE_PARA(s); }
void GUI_X_ErrorOut(const char *s) { GUI_USE_PARA(s); }
三句话其余的全部注释掉——最后3句不能注释,因为其他文件引用了这3个函数。
修改GUIConf.h
打开工程目录文件夹Config,修改其中的GUIConf.h文件:
#define GUI_OS (1)
1代表支持操作系统。
主程序修改
#include "sys.h"#include "delay.h" #include "usart.h" #include "led.h"#include "ili93xx.h" #include "touch.h"#include "gui.h"#include "24cxx.h"#include "ucos_ii.h" int t;/////////////////////////UCOSII任务设置/////////////////////////////////////START 任务//设置任务优先级#define START_TASK_PRIO 10 //开始任务的优先级设置为最低//设置任务堆栈大小#define START_STK_SIZE 64//任务堆栈 OS_STK START_TASK_STK[START_STK_SIZE];//任务函数void start_task(void *pdata); //触摸屏任务//设置任务优先级#define TOUCH_TASK_PRIO 6 //设置任务堆栈大小#define TOUCH_STK_SIZE 64//任务堆栈OS_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];//任务函数void touch_task(void *pdata);int main(void){ Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz delay_init(168); //初始化延时函数 LED_Init(); //初始化LED时钟 uart_init(84,115200); //初始化串口波特率为115200——必须要有这句话 LCD_hard_Init(); TP_Init(); //触摸屏初始化 GUI_Init(); GUI_SetBkColor(GUI_BLUE);//设置背景色 GUI_SetColor(GUI_WHITE); GUI_Clear(); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringAt("- - STM32F4 - -",4,10); GUI_DispStringAt("- - UCGUI3.98 - -",4,40); GUI_DispStringAt("- - SUCCESSFULLY - -",4,70); delay_ms(2000);// 延时2s GUI_Clear(); GUI_CURSOR_Show(); OSInit(); //初始化UCOSII OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务 OSStart(); //启动UCOSII}//开始任务void start_task(void *pdata){ OS_CPU_SR cpu_sr=0; pdata = pdata; OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) OSTaskCreate(touch_task,(void *)0,(OS_STK*)&TOUCH_TASK_STK[TOUCH_STK_SIZE-1],TOUCH_TASK_PRIO); OSTaskSuspend(START_TASK_PRIO); //挂起起始任务. OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)} //TOUCH任务void touch_task(void *pdata){ while(1) { t++; delay_ms(10); if(t==50) { LED0=~LED0; t=0; } GUI_TOUCH_Exec(); GUI_Exec();//GUI事件更新 };}
- STM32F4应用笔记(五)UCGUI+uC/OS-II+支持触摸屏
- STM32F4应用笔记(六)UCGUI+uC/OS-II+支持触摸屏——触屏计算器
- STM32F4应用笔记(四)UCGUI裸机移植——支持触摸屏
- STM32F4应用笔记(三)UCGUI裸机移植——不支持触摸屏
- uC/OS-II源码分析(五)
- UC/OS-II笔记
- uC/OS-II之触摸屏显示
- uC/OS-II学习笔记(1)
- uC/OS-II学习笔记(2)
- uC/OS-II学习笔记(3)
- UC/OS II 学习笔记(一)
- UC/OS-II(二)自学笔记
- uC/OS-II+ucGUI 3.24 保护模式下的移植
- 与uc/os-ii uC/GUI触摸屏汉字库
- uC/OS-II内核架构解析(7)---uC/OS-II应用开发
- 【专题】uC/OS-II内核架构解析(7)---uC/OS-II应用开发
- uC/OS-II内核架构解析(7)---uC/OS-II应用开发
- uc/os-II笔记(一)
- 栈(链式)
- JAVA源码解读之StringBuffer
- 计算机组成与系统结构学习笔记(1)一 计算机系统概论 [1.3
- Friday the Thirteenth
- hibernate的二级缓存 I
- STM32F4应用笔记(五)UCGUI+uC/OS-II+支持触摸屏
- 大鱼吃小鱼
- 时域卷积与频域乘积
- 快乐数
- Java集合类HashMap实现原理
- Windows server 2008 性能优化
- Datatable的分页入门
- Spring Bean的生命周期小析(一)
- Greedy Gift Givers