赞
踩
一、规划需要实现的功能
我使用的此款开发板,板载资源丰富,我预计实现以下功能
①上电之后oled屏幕上方显示一个“LiteOS”,下方显示当前温度
②移植shell组件,可以自定义各种命令,预计实现一个查询温度的指令
③移植at框架,用于控制nbiot(bc95/bc28)实现定时上报温度到云平台
④实现一个外部中断,用来干啥还没想好
二、分析原理图并使用STM32MXcube生成一个基于Makefile的工程
初步规划,我要用到:
①uart1用于和用户做shell交互和前期的debug输出调试信息
②uart3用于与nbiot进行通讯,收发AT指令及数据
③SCL1和SDA1,用于控制oled显示屏
④DHT11_DATA,用于采集温湿度信息
⑤KEY1-KEY4,可以做一些外部中断,用于控制啥我还没有想好
⑥SWD下载程序需要用到的管脚(SWCK、SWIO、RST)
开始使用STM32CubeMX创建Makefile工程
①选择单片机型号--->STM32L476RG
②通过图形化界面配置各个管脚的功能
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配置为输出即可
暂时这样配置,后面不合适在修改
时钟配置图如下:
中断配置如下:
相信到这里有细心的读者会发现我的中断都没有使能,为什么这样做呢?
放心,我没做错,因为我们最新版的LiteOS采用的是“接管中断”的方式,所以这里不需要使能中断,大家还要注意:不要勾选生成Pendable request for system service 和 Time bass:System tick timer,因为LiteOS中已经帮我们实现好了这两个函数,如果你勾选了编译时会报错(如果你勾选了,不要惊慌,你可以找到它并将它注释掉即可)。
在工程管理页面中勾选Generate peripheral initializ as a pair of '.c/.h' files per peripheral,若不勾选所有的外设初始化函数都会直接生成到main.c文件中,很杂乱。
注意哟!这里要选择 Makefile,点击“GENERATE CODE”就大功告成啦,你将在指定目录下的到一个基于Makefile的工程。如下图
整理以下文件,便于后期添加组件
①我们需要整理以下文件,便于后期添加其他组件,将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文件给大家放附件了,修改下生成路径,点下生成代码就可以用了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。