“NBDK-L4:LiteOS实验教程”的版本间的差异
(→教程介绍) |
(→教程介绍) |
||
| 第57行: | 第57行: | ||
=== 常用文件简介 === | === 常用文件简介 === | ||
| − | == 实验01- | + | == 实验01-TFT显示屏 == |
LiteOS的第一个实验,我们给大家带来的是LCD图形化显示实验。至于我们为什么要首先讲解LCD相关的例程,而不是最简单的LED控制实验,主要目的有三个: | LiteOS的第一个实验,我们给大家带来的是LCD图形化显示实验。至于我们为什么要首先讲解LCD相关的例程,而不是最简单的LED控制实验,主要目的有三个: | ||
| 第67行: | 第67行: | ||
=== 工程文件说明 === | === 工程文件说明 === | ||
| + | 首先我们给大家介绍一下,每个工程的Group目录下的文件的功能。 | ||
| + | |||
| + | [[文件:NBDK-LOS-KEIL-PRO.png|边框|无框|566x566像素]] | ||
| + | {| class="wikitable" | ||
| + | |+KEIL工程文件简介 | ||
| + | !Group | ||
| + | !file | ||
| + | !说明 | ||
| + | |- | ||
| + | | rowspan="5" |'''LiteOS/arch''' | ||
| + | | colspan="2" |'''arch目录取名来源于architecture(建筑结构),所包含的是硬件配置文件''' | ||
| + | |- | ||
| + | |los_dispatch_keil.c | ||
| + | |keil中los的系统调度文件 | ||
| + | |- | ||
| + | |los_hw.c | ||
| + | |hardware硬件配置文件 | ||
| + | |- | ||
| + | |los_hw_tick.c | ||
| + | |hardware tick硬件系统tick文件 | ||
| + | |- | ||
| + | |los_hwi.c | ||
| + | |hardware interrupt硬件中断文件 | ||
| + | |- | ||
| + | | rowspan="18" |'''LiteOS/kernel''' | ||
| + | | colspan="2" |'''los内核''' | ||
| + | |- | ||
| + | |cmsis_liteos.c | ||
| + | | | ||
| + | |- | ||
| + | |los_config.c | ||
| + | | | ||
| + | |- | ||
| + | |los_priqueue.c | ||
| + | | | ||
| + | |- | ||
| + | |los_swtmr.c | ||
| + | | | ||
| + | |- | ||
| + | |los_sys.c | ||
| + | | | ||
| + | |- | ||
| + | |los_task.c | ||
| + | | | ||
| + | |- | ||
| + | |los_tick.c | ||
| + | | | ||
| + | |- | ||
| + | |los_timeslice.c | ||
| + | | | ||
| + | |- | ||
| + | |los_event.c | ||
| + | | | ||
| + | |- | ||
| + | |los_mux.c | ||
| + | | | ||
| + | |- | ||
| + | |los_queue.c | ||
| + | | | ||
| + | |- | ||
| + | |los_sem.c | ||
| + | | | ||
| + | |- | ||
| + | |los_membox.c | ||
| + | | | ||
| + | |- | ||
| + | |los_memory.c | ||
| + | | | ||
| + | |- | ||
| + | |los_memstat.c | ||
| + | | | ||
| + | |- | ||
| + | |los_muitipledlinkhead.c | ||
| + | | | ||
| + | |- | ||
| + | |los_misc.c | ||
| + | | | ||
| + | |- | ||
| + | |'''Driver/STM32L4xx_hal_driver''' | ||
| + | | colspan="2" |'''和硬件相关的HAL抽象层文件,主要是电源、flash、外设。HAL不清楚如何使用的,大家可以先看下基础实验部分。''' | ||
| + | |- | ||
| + | | rowspan="2" |'''Driver/CMSIS''' | ||
| + | | colspan="2" | '''Cortex-M 处理器系列的与供应商无关的硬件抽象层''' | ||
| + | |- | ||
| + | |system_stm32l4xx.c | ||
| + | |STM32L4系列硬件抽象层文件 | ||
| + | |- | ||
| + | | rowspan="2" |'''startup''' | ||
| + | | colspan="2" |'''系统启动文件''' | ||
| + | |- | ||
| + | |los_startup_keil.s | ||
| + | |los在keil中的启动项文件 | ||
| + | |- | ||
| + | |'''Application/Display''' | ||
| + | | colspan="2" |'''TFT彩屏驱动,以及GUI图形界面驱动文件''' | ||
| + | |- | ||
| + | | | ||
| + | |gui.c | ||
| + | |GUI图形界面文件 | ||
| + | |- | ||
| + | | | ||
| + | |gui_dispstr.c | ||
| + | |GUI字符串打印 | ||
| + | |- | ||
| + | | | ||
| + | |gui_dispval.c | ||
| + | |GUI值打印 | ||
| + | |- | ||
| + | | | ||
| + | |gui_drawBitmap.c | ||
| + | |GUI图形打印 | ||
| + | |- | ||
| + | | | ||
| + | |gui_os.c | ||
| + | |GUI操作系统任务 | ||
| + | |- | ||
| + | | | ||
| + | |lcd.c | ||
| + | |TFT驱动文件 | ||
| + | |- | ||
| + | | | ||
| + | |bmp_keyio.c | ||
| + | |按键图形界面 | ||
| + | |- | ||
| + | | | ||
| + | |bmp_logo.c | ||
| + | |谷雨logo图形界面 | ||
| + | |- | ||
| + | | | ||
| + | |Font8x16.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |FontMethod.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |FontZH16x16_simsun.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |FontZHMethod.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |lcddrv_tft_130 | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |lcddrv_tft_144 | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |lcd_gpio.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |lcd_hw_cfg.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |lcd_spi.c | ||
| + | | | ||
| + | |- | ||
| + | |'''Application/Driver''' | ||
| + | | colspan="2" |'''外设驱动,直接调用HAL层接口的函数''' | ||
| + | |- | ||
| + | | | ||
| + | |gpio.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |spi.c | ||
| + | | | ||
| + | |- | ||
| + | |'''Application/bsp''' | ||
| + | | colspan="2" |'''Board Support Package 板级支持包,是外设驱动的上一层,结合了具体的硬件外设''' | ||
| + | |- | ||
| + | | | ||
| + | |los_bsp_adapter.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |los_bsp_lcd.c | ||
| + | | | ||
| + | |- | ||
| + | |'''Application/task''' | ||
| + | | colspan="2" |用户任务,用户个人创建的task | ||
| + | |- | ||
| + | |'''Application/user''' | ||
| + | | colspan="2" |用户文件,main函数、系统时钟、系统外设宏定义 | ||
| + | |- | ||
| + | | | ||
| + | |stm32l4xx_it.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |sys_init.c | ||
| + | | | ||
| + | |- | ||
| + | | | ||
| + | |main.c | ||
| + | | | ||
| + | |} | ||
=== 工程options配置 === | === 工程options配置 === | ||
2019年4月3日 (三) 12:56的版本
目录
1 教程介绍
经过NBDK-L4基础实验部分的学习,大家应该已经能够熟练的使用STM32Cube生成工程,并且掌握工程各部分文件的功能,完成个人需求的开发。在开发的过程中,我们不难发现,所有的功能都需要在main()函数中去配置工作,这样的工作方式很明显不能适用于较复杂的功能开发,所以我们需要引入OS操作系统,以此来方便我们的开发。本章节我们将给大家带来华为LiteOS操作系统的使用和讲解。
对于LiteOS的学习和使用,我们主要分为三个步骤:
1.了解LiteOS
在华为的IOT开发者专区中,有专门对于LiteOS的讲解,大家可以通过如下的链接前往查看
华为IOT开发者专区:https://developer.huaweicloud.com/iot
华为LiteOS源码及说明:https://github.com/LiteOS/LiteOS
2.如何在Cube生成的工程中移植LiteOS
在华为LiteOS源码及说明的链接中,有给大家说明如何移植华为LiteOS。
这一步骤大家可以略过,直接使用我们移植好的工程去进行需求开发。
3.如何使用LiteOS开发我们的功能
这一部分是我们LiteOS实验的主体部分,请大家跟随我们的实验一起学习。
| Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,更好地支持低功耗场景,支持tickless机制,支持定时器对齐。
同时提供端云协同能力,集成了LwM2M、CoAP、mbedtls、LwIP全套IoT互联协议栈,且在LwM2M的基础上,提供了AgentTiny模块,用户只需关注自身的应用,而不必关注LwM2M实现细节,直接使用AgentTiny封装的接口即可简单快速实现与云平台安全可靠的连接。 Huawei LiteOS自开源社区发布以来,围绕NB-IoT物联网市场从技术、生态、解决方案、商用支持等多维度使能合作伙伴,构建开源的物联网生态,目前已经聚合了30+ MCU和解决方案合作伙伴,共同推出一批开源开发套件和行业解决方案,帮助众多行业客户快速的推出物联网终端和服务,客户涵盖抄表、停车、路灯、环保、共享单车、物流等众多行业,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。 |
1.1 工程简介
1.2 工程目录简介
大家打开任意一个LiteOS例程,都会看到如下的4个目录(Drivers、LiteOS、MDK-ARM、Src)及clean.bat文件。
其中clean.bat是用于清除工程编译生成的中间文件。例如我们想拷贝一个编译过的工程,工程有200M左右大小,我们点击clean.bat清除一下编译生成的中间文件,则工程大概会缩小到100M左右,此时工程只剩下了库文件、用户文件,以及编译生成的hex文件。
从上图可以看到,四个主目录下分别包含的一些文件,这边给大家简单的介绍一下这边文件大概的功能。
Drivers:
STM32驱动文件目录,也就是大家常说的hal库,里面包含了hal(硬件抽象层)相关的文件。
主要就是有RCC时钟、Flash内存,以及大家常用的外设(例如uart、spi、adc等等)的一些库文件。
LiteOS:
华为LiteOS操作系统目录,里面包含了两个目录:arch、kernel。
这两个目录就是我们移植到STM32cube工程中的LiteOS相关文件。
MDK-ARM:
工程目录,主要是两个工程文件“.uvoptx”以及".uvprojx"(keil打开的是这个)。剩下的文件比较重要的是Output目录下编译生成的“.hex”文件。
Src:
用户文件,用户自己开发的一些驱动文件(外设驱动等等),以及main文件所在的目录。
1.3 常用文件简介
2 实验01-TFT显示屏
LiteOS的第一个实验,我们给大家带来的是LCD图形化显示实验。至于我们为什么要首先讲解LCD相关的例程,而不是最简单的LED控制实验,主要目的有三个:
1.大家了解了LCD例程之后,对于后面的其他实验,可以使用LCD显示一些调试信息,这样便利于大家的开发。
2.我们会借由此例程,给大家讲解LiteOS例程在Keil5中的目录结构,以及我们开发者需要关注的重要文件及重要功能函数。
3.借由此例程,给大家展示keil5 options中的配置。
2.1 工程文件说明
首先我们给大家介绍一下,每个工程的Group目录下的文件的功能。
| Group | file | 说明 |
|---|---|---|
| LiteOS/arch | arch目录取名来源于architecture(建筑结构),所包含的是硬件配置文件 | |
| los_dispatch_keil.c | keil中los的系统调度文件 | |
| los_hw.c | hardware硬件配置文件 | |
| los_hw_tick.c | hardware tick硬件系统tick文件 | |
| los_hwi.c | hardware interrupt硬件中断文件 | |
| LiteOS/kernel | los内核 | |
| cmsis_liteos.c | ||
| los_config.c | ||
| los_priqueue.c | ||
| los_swtmr.c | ||
| los_sys.c | ||
| los_task.c | ||
| los_tick.c | ||
| los_timeslice.c | ||
| los_event.c | ||
| los_mux.c | ||
| los_queue.c | ||
| los_sem.c | ||
| los_membox.c | ||
| los_memory.c | ||
| los_memstat.c | ||
| los_muitipledlinkhead.c | ||
| los_misc.c | ||
| Driver/STM32L4xx_hal_driver | 和硬件相关的HAL抽象层文件,主要是电源、flash、外设。HAL不清楚如何使用的,大家可以先看下基础实验部分。 | |
| Driver/CMSIS | Cortex-M 处理器系列的与供应商无关的硬件抽象层 | |
| system_stm32l4xx.c | STM32L4系列硬件抽象层文件 | |
| startup | 系统启动文件 | |
| los_startup_keil.s | los在keil中的启动项文件 | |
| Application/Display | TFT彩屏驱动,以及GUI图形界面驱动文件 | |
| gui.c | GUI图形界面文件 | |
| gui_dispstr.c | GUI字符串打印 | |
| gui_dispval.c | GUI值打印 | |
| gui_drawBitmap.c | GUI图形打印 | |
| gui_os.c | GUI操作系统任务 | |
| lcd.c | TFT驱动文件 | |
| bmp_keyio.c | 按键图形界面 | |
| bmp_logo.c | 谷雨logo图形界面 | |
| Font8x16.c | ||
| FontMethod.c | ||
| FontZH16x16_simsun.c | ||
| FontZHMethod.c | ||
| lcddrv_tft_130 | ||
| lcddrv_tft_144 | ||
| lcd_gpio.c | ||
| lcd_hw_cfg.c | ||
| lcd_spi.c | ||
| Application/Driver | 外设驱动,直接调用HAL层接口的函数 | |
| gpio.c | ||
| spi.c | ||
| Application/bsp | Board Support Package 板级支持包,是外设驱动的上一层,结合了具体的硬件外设 | |
| los_bsp_adapter.c | ||
| los_bsp_lcd.c | ||
| Application/task | 用户任务,用户个人创建的task | |
| Application/user | 用户文件,main函数、系统时钟、系统外设宏定义 | |
| stm32l4xx_it.c | ||
| sys_init.c | ||
| main.c | ||

