一直以来都想diy一个四轴飞行器玩玩,可惜EEPW在之前已经举行过四轴活动,自己没有机会参与,好遗憾的说。看到两轮自平衡小车,心里又痒了起来,忍不住就搞了一个,申请,下单等快递。一切才刚开始.点击标题直接跳转哦
1.开箱组装篇(2015-06-29更新)
2.程序下载篇(2015-06-30更新)
3.STM32官方固件库下载(2015-07-03更新)
4.通过一个新建工程学习配置固件库(2015-07-04更新)一直以来都想diy一个四轴飞行器玩玩,可惜EEPW在之前已经举行过四轴活动,自己没有机会参与,好遗憾的说。看到两轮自平衡小车,心里又痒了起来,忍不住就搞了一个,申请,下单等快递。一切才刚开始.点击标题直接跳转哦
1.开箱组装篇(2015-06-29更新)
2.程序下载篇(2015-06-30更新)
3.STM32官方固件库下载(2015-07-03更新)
4.通过一个新建工程学习配置固件库(2015-07-04更新)小车收到,包装很严实。小纸箱里塞满了各种纸片,我怕里面会有电子元件,每个都检查了一下,其实我拆包裹特别的没有耐心,别人都是拆的工工整整的,我拆完就是乱七八糟,拍照留念:
组装起来难度很小,电路板都是元件焊接好的,我买的套餐包括一个屏幕,排针焊接一下插进去就好了。鉴于组装过程其他用户都发的很详细,我在这里不做赘述,完成以后的效果是这样的:
翻个身给大家看看底部:
和充电器来个合影:
看到主板上面预留有超声波测距接口,我就知道这货将来可以一显身手了:
手机安装app后,打开蓝牙连接小车后,操控正常,前后左右 转圈什么的都没有问题,只是有一点不好就是小车在保持平衡的时候如果你把小车提起来,小车就开始狂转再放下来也不能保持平衡,我觉得如果检测到小车被提起来的时候把电机关掉就好了,这个是后话,接下要做的是琢磨一下程序,下个贴更新程序下载。
没有J-link,话说为啥j-link会这么贵呢?我选择了使用串口下载的办法,这也是大家喜闻乐见的一种下载方式,51单片机都是这么过来的,因此一点也不会陌生。操作上面也没有什么难点,总结起来就以下几个步骤:
1. 1.用任意一种USB转串口模块(CH340 ,FT232)将电脑和小车主板的端口(串口1,J3)连接起来,如果电脑之前没有使用过这样的模块,可能会提示安装驱动,依照提示安装好驱动,电脑的设备管理器就会出现一个com端口
2. 2.将小车的红色拨码开关拨到“OFF”位置,打开MCUISP软件,选择STMISP,设置好正确的com端口和波特率,打开要下载的HEX文件
3.点击开始编程,等待编程完成。
截个图如下:
STM32的寄存器很多,如果我们在程序中直接写代码操作这些寄存器,意味着我们要掌握每个寄存器的用法,对于我们这些初学者来说,这是一个不小的拦路虎。ST提供了一系列的固件库,其实就是函数包,通过固件库我们无需深入掌握底层硬件细节也可以应用每个外设。意法半导体也在不断的更新这个固件库,截至到目前最新的库版本为V3.5.以下介绍如何从官方下载最新的固件库。
1. 1.登陆ST官方网站http://www.stmicroelectronics.com.cn/web/cn/home.html
2. 2.选择 支持->工具.软件
3. 3.选择微控制器软件
4. 4.选择stm32MCU软件
5. 5.过滤器配置如下
6.
1.
6.选择下载如下的固件库1.
固件库目录结构:
Libraries 文件夹下面有 CMSIS 和 STM32F10x_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件.其 中 CMSIS 目 录 下 面 是 启 动 文 件 ,STM32F10x_StdPeriph_Driver 放的是 STM32 固件库源码文件。源文件目录下面的 inc 目录存放的是 stm32f10x_xxx.h 头文件,无需改动。src 目录下面放的是 stm32f10x_xxx.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库的核心文件,每个外设对应一组文件。Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。下
1建立目录
1.1 新建工程目录:“LED”,你也可以根据自己的需要命名此顶层目录;
1.2在目录“LED”下新建 “RVMDK”目录,表示采用ARM MDK开发环境;
1.3在“RVMDK”目录下新建目录“V1”,表示软件版本V1.0,这个好处在于下次将整个目录复制一下改为“V2”,软件版本就是V2.0了。
1.4在“V1”目录下新建 “Libraries”目录;
1.5在“V1” 目录下新建 “Project” 目录。
1.6在“Project”目录下新建“OBJ”、“LIST”、“Pro”3个目录。
1.7在“V1” 目录下新建“USER”目录。
1.8在“USER”目录下新建“INC”、“SRC”2个目录。
完成后的目录结构如下:
2 拷贝文件
2.1 将固件库目录X:\..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries下的所有目录拷贝到工程目录X:\..xx\LED\RVMDK\V1\Libraries目录下。
2.2将固件库目录 X:\..\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggle目录下的“stm32f10x_it.c”、“system_stm32f10x.c”拷贝到工程目录X:\..\LED\RVMDK\V1\USER\SRC目录下,在此“SRC”目录下新建“main.c”文件,“main.c”先“神马”也不写。
2.3 将固件库目录X:\..\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggl目录下的“stm32f10x_conf.h”、“stm32f10x_it.h” 这2个文件拷贝到工程目录 X:\..\LED\RVMDK\V1\USER\INC目录下。
3 建立工程:
3.1运行“Keil uVision4” ;
3.2点击主菜单栏 “Project”è“New uVision Project”,选择在工程目录的X:\..\LED\RVMDK\V1\Project\Pro目录下命名新建工程为“LED_FLASH.uvproj”(当然也可以命名为你自己需要的工程名);
3.3接下来出现CPU选择窗口,选择CPU为 “STMicroelectronics” è“STM32F103C8” (这个大家根据自己的需要选择),点击 “OK” 按钮;
3.4接下来出现“Copy STM32 Startup Code to Project Folder and ADD File to Project ?”提示时选择“否”(在后面的步骤中会根据CPU选择启动文件的,这里不用选择),完成工程建立。
4 工程管理
上一节新建的工程还是空空的,这一步要将它实例化。
4.1 在“Project”窗口中用鼠标左键点击“Target 1”,再点击右键弹出菜单选择菜单中的 “Manage Components”子菜单,出现“Components,Environment and Books”窗口。
4.2 用鼠标双击“Project Targets”栏中的 “Target 1” 将 “Target 1” 改为 “LED_FLASH” ,在中间的 “Groups”栏中添加“USER”、“STM32_LIB”、“TARTUP”、“CMSIS”4个条目
4.3 在“USER”条目的“Files”栏中添加目录..\V1\USER\SRC下的“main.c”、“stm3210x_it.c”2个文件,通过窗口的“Add Files”按钮可以添加文件
4.4 在 “STM32_LIB” 条目的 “Files” 栏中添加目录..V1\Libraries\STM32F10x_StdPeriph_Driver\src目录下的“stm3210x_misc.c”、“stm3210x_rcc.c”、“stm3210x_gpio.c”、 “stm3210x_usart.c”4个文件
4.5 在“STARTUP”条目的“Files” 栏中添加目录..\V1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的 “startup_stm3210x_hd.s”这个文件.
4.6 在 “CMSIS” 条目的 “Files” 栏中添加目录 ..\V1\Libraries\CMSIS\CM3\CoreSupport下的“core_cm3.c”和目录
..\V1\USER\SRC下的“system_stm32f10x.c”这2个文件。
完成后的图片如下:
5 工程设置
5.1在“Project”窗口中用鼠标左键点击最顶层的“LED_FLASH”,再点击右键弹出菜单选择菜单中的 “Options for Target …”子菜单出现“Options for Target ‘LED_FLASH”窗口,勾选使用微库IROM1、IRAM1根据芯片不同而不同,一般KEIL会自动根据芯片填好的
5.2 选择顶层的“Output ”,进入“Output”设置页,点击下面的“Select Folder for Objects…”按钮,选择目录。。V1\Project\OBJ为目标文件目录,选中“Create HEX File”
5.3 选择顶层的“Listing”页 ,进入“Listing”设置页,点击下面的“Select Folder for Listings…”按钮,选择目录..\V1\Project\LIST目录为list文件生成目录
5.4 这是关键的一步,选择顶层的“C/C++”页 ,进入“C/C++”设置页,在“Preprocessor Symbols”的“Define:”文本框中填入“STM32F10X_MD,USE_STDPERIPH_DRIVER”。如果不填编译会报错,大家可以试一下。
5.5 在窗口的“Include Paths”旁边的文本框后有一个按钮,点击调出“Folder Setup”窗口。这里要添加4个目录,因为这4个目录里都有“.h ”文件:
“ RS422\RVMDK\V1\Libraries\STM32F10x_StdPeriph_Driver\inc” ;
“ RS422\RVMDK\V1\Libraries\CMSIS\CM3\CoreSupport ” ;
“ RS422\RVMDK\V1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x ” ;
“ RS422\RVMDK\V1\USER\inc ” ;
5.6 其他“C/C++”默认就可以了。
6. main.c文件
因为这是一个没有任何功能的工程框架,所以main.c可以这么写:
#include "stm32f10x.h"
main ()
{
while (1)
{
;
}
}
编译程序,没有警告和错误,框架就算生成了,想添加自己的代码就可以以后添加了
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |