stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3

一、规划需要实现的功能

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第1张图片

我使用的此款开发板,板载资源丰富,我预计实现以下功能

①上电之后oled屏幕上方显示一个“LiteOS”,下方显示当前温度

②移植shell组件,可以自定义各种命令,预计实现一个查询温度的指令

③移植at框架,用于控制nbiot(bc95/bc28)实现定时上报温度到云平台

④实现一个外部中断,用来干啥还没想好

二、分析原理图并使用STM32MXcube生成一个基于Makefile的工程

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第2张图片

初步规划,我要用到:

①uart1用于和用户做shell交互和前期的debug输出调试信息

②uart3用于与nbiot进行通讯,收发AT指令及数据

③SCL1和SDA1,用于控制oled显示屏

④DHT11_DATA,用于采集温湿度信息

⑤KEY1-KEY4,可以做一些外部中断,用于控制啥我还没有想好

⑥SWD下载程序需要用到的管脚(SWCK、SWIO、RST)

开始使用STM32CubeMX创建Makefile工程

①选择单片机型号--->STM32L476RG

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第3张图片

②通过图形化界面配置各个管脚的功能

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第4张图片

USART1配置115200/8/N/1,个人习惯

USART3配置9600/8/N/1,因为nbiot默认参数为9600/8/N/1

DHT11配置为上拉输入即可

使能SWD debug模式

OLED管脚可以配置为IIC功能

KEY1--KEY4和NB_RI配置输入即可

LED、NB_EN配置为输出即可

暂时这样配置,后面不合适在修改

时钟配置图如下:

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第5张图片

中断配置如下:

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第6张图片

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第7张图片

相信到这里有细心的读者会发现我的中断都没有使能,为什么这样做呢?

放心,我没做错,因为我们最新版的LiteOS采用的是“接管中断”的方式,所以这里不需要使能中断,大家还要注意:不要勾选生成Pendable request for system service 和 Time     bass:System tick timer,因为LiteOS中已经帮我们实现好了这两个函数,如果你勾选了编译时会报错(如果你勾选了,不要惊慌,你可以找到它并将它注释掉即可)。

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第8张图片

在工程管理页面中勾选Generate peripheral initializ as a pair of '.c/.h' files per peripheral,若不勾选所有的外设初始化函数都会直接生成到main.c文件中,很杂乱。

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第9张图片

注意哟!这里要选择 Makefile,点击“GENERATE CODE”就大功告成啦,你将在指定目录下的到一个基于Makefile的工程。如下图

stm32移植华为鸿蒙,STM32L476移植华为LiteOS系列教程---使用STM32CubeMX创建工程 3_第10张图片

整理以下文件,便于后期添加组件

①我们需要整理以下文件,便于后期添加其他组件,将Drivers\CMSIS\Device\ST\STM32L4xx\Include中的文件复制到Inc下,然后删除Drivers文件夹(因为iot-link SDK\drivers\third_party\ST中为我们提供了该文件夹下的所有文件,所以没必要保留)

②新建MXcube文件夹,将.mxproject和STM32L476.ioc两个MXcube相关的文件移入该文件夹、新建Targets/NB476文件夹,将Inc和Src移入该文件夹,并在该文件夹下新建GCC\appbuild文件夹,Hardware\Inc文件夹、Hardware\Src文件夹、OS_CONFIG文件夹、Lib文件夹、uart_at文件夹,

③并将STM32L476RGTx_FLASH.ld移动到GCC文件夹中并更改名称为os.ld

如下图:

├─MXcube                --存放MXcube新建工程生成的工程配置文件

├─targets                  --存放工程相关文件

├─NB476

├─GCC              --存放Makefile以及编译过程文件

├─appbuild   --存放编译过程文件和elf、hex、bin文件

├─Hardware      --存放用户使用的外设驱动代码,例如oled、dht11的代码放到这里

│  ├─Inc

│  └─Src

├─Inc                --存放STM32F476的初始化代码等头文件

├─Src                --存放STM32F476的初始化代码等源文件

├─OS_CONFIG  --存放LiteOS的配置文件

├─Lib                 --存放编译时可能使用到的分散加载文件

└─uart_at           --存放at组件需要用到的驱动文件

PS:我的STM32Cube文件给大家放附件了,修改下生成路径,点下生成代码就可以用了。

你可能感兴趣的:(stm32移植华为鸿蒙)