入门教程 win10平台STM32CubeMX+MDK5开发环境搭建+跑马灯程序的实现(多图 慎入!)
时间:10-02
整理:3721RD
点击:
Win10平台 STM32CubeMX+MDK5 开发环境搭建
一、 软件的下载与安装
首先下载好需要的安装包
这些文件我都整理在云盘里了,需要的下载(教程的Word版也在里面)
地址:http://pan.baidu.com/s/1i5fpuOP
1. STM32CubeMX的运行需要java环境,所以需要先安装jre从云盘下载下来之后就可以直接安装了。(可以更改安装路径)
点击“下一步”就开始安装,直到安装完成。
这样,java运行环境就已将配置好了,下面就可以安装STM32CuMX了。
2. 安装STM32CubeMX
完成上一步之后,这一步就很简单了,什么也不需要更改,一路NEXT就可以了。(中间也可以更改安装路径!)
安装完之后,桌面上就会生成一个软件的快捷方式
双击打开
安装完成之后还需要下载与芯片相对应的库,过程如下:
2.1 打开Help菜单下的Install New Libraries选项
选中需要的平台版本,打勾,点击Install Now。等待下载完成(网有点慢!)
3.趁这个时间安装MDK5
同样一路NEXT就行(同样可以自己更改安装路径),遇到下面这个界面,随便填就行!
最后还要破解。
用以管理员身份打开Keil软件。
点击File菜单下的License Management
打开License Management选项卡,复制CID
打开破解软件,(不用管理员模式)
Target选中ARM,把刚才复制的CID粘贴到对应的CID输入框里面,点击Generate按钮
把生成的序列号复制下来(Ctrl+C)
粘贴到下图中的位置,点击Add LIC
激活成功!
对于keil5来说,还要安装需要的库,双击同一文件夹下的Keil.STM32F1xx_DFP.1.0.5.pack自动安装
最后还要检查一下更新把最新的F4的库安装上。(这一步可以不做,后面打开用STM32CubeMX生成的工程的时候,会自动提示安装!)
还有浮点运算的库。
STM32CubeMX的库文件下载完成之后,就可以进行工程的创建了。下面是下载完成后的图
二、工程的创建
我们用STM32CubeMX来进行工程的创建,与各种寄存器的的初始化。
打开STM32CubeMX软件,点击New Project。
弹出下面的界面,可以按芯片选择,也可以按板子型号选择
我是按板子型号选择的。
点击OK
等一会会出现下面的界面,左面是外设的配置,右面那个图直接把所有的引脚都贴了出来,可以直接点击修改引脚的属性十分方便。
(由于是按板子型号选的,所以板子上的一些外设对应的IO口都已经设置好了,可以不用改,当然也可以再自己设置一遍)
先写一个跑马灯的程序,
设置对应的引脚为GPIO_Output模式,
然后配置时钟,点击上面的选项卡切换到时钟配置界面
直接在那个方框里输入需要的时钟频率,按下回车,软件就自动配置好了。
有时可能会出现输入的时钟不能实现的情况如(这个问题是我配置F103系列的芯片的时候发现的。如果是配置F4的工程可以忽略!)
可能是时钟源的选择有问题,在第一个选项卡Pinout里面的RCC配置不正确
这样的话,就能得到芯片的最大时钟频率了。
再后面的一个选型卡是详细配置的各个功能的,你可以点击GPIO那个按钮,具体的配置下每个IO的输入输出模式,高低电平等等。
再后面的就是功耗的设置了,我们一般也用不到,就不用动了(都这么说的。)
接下来就是生成MDK5的工程了
可以直接点击下面的那个图标生成工程,(由于是第一次生成工程,工程的属性都没有设置所以会弹出工程属性的设置界面)
也可以直接点击 project->Setting 设置好工程名,工程路径和IDE (我选的是MDK5)
后面的Code Generate选项卡勾选输出单独的.c/.h文件。
点击OK
点击这个图标生成工程文件(如果刚才是直接点击的这个图标进入的工程设置界面,现在就不用点了)
等一会就生成完成了
打开工程
直接编译是没有错误的。
再工程项目里找到main.c函数打开
其他的不用看,直接找到main函数里面包含三个函数
这就是STM32CubeMX对底层寄存器的初始化函数
我们打开那个GPIO的初始化函数看一下有没有把我们需要的端口配置好
光标放到那个函数上单击鼠标右键在弹出的快捷菜单上选择Go To Definition...如下图
这样就找到了MX_GPIO_Init() 函数发现里面两个与led灯对应的两个IO口都已经配置成了推挽输出模式了,就是这么简单!
相比较于用MDK5直接组建工程文件,不仅组建过程麻烦,还要比着说明文档找寄存器,写初始化函数,用STM32CubeMX构建工程就十分简单了。
下面在main函数里面添加以下代码,实现跑马灯的效果。
下面贴出修改后的main()函数。
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- /* USER CODE END 1 */
- /* MCU Configuration----------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* Configure the system clock */
- SystemClock_Config();
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- /* USER CODE BEGIN 2 */
- HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- HAL_GPIO_TogglePin(GPIOB, LD2_Pin|LD3_Pin);
- HAL_Delay(200);
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
要想下载到板子上运行还要安装STLink驱动,
将开发板用数据线连接到电脑上,解压下载好的ST-LINK官方驱动,双击对应的exe文件安装。
安装成功之后打开设备管理器发现有下面这个端口说明安装成功。(也可以不看,直接用Keil硬件仿真测试一下)
设置仿真选项为STLink(STM32CubeMX生成的工程默认都是STLink硬件仿真,如果没动过仿真选项的话不用改。)点击工程配置按钮
切换到Debug选项卡
看选中的是不是ST-Link,不是的话改过来。
点击keil软件的仿真按钮,进入硬件调试
进入仿真界面
就发现板子上的两个led就已经开始闪起来了。
第一次发帖,,,有什么错误欢迎回帖指正^o^
自己顶一下吧,,写这么长的帖子也不容易。
感谢小编无私分享!
不错不错。受益匪浅。