“使用stm32cubeMX 工具进行代码生成,以LED点灯为例”
01STM32CubeMx的使用条件
1.硬件条件:
(1)野火STM32F103开发板-指南者
(2)原理图
原理图可以参考官网,在stm32CubeMx入门教程的使用中会将用到的部分原理图以图片的形式贴出。
2.软件
(1)STM32CubeMX 从STM公司官网下载。
(2) STM32CubeF1 这是F1系列的HAL库,使用cubeMx进行代码初始化配置和代码生成就使用的这个库,可以根据自己的单片机系列选择下载地址。
(3) MDK 这个软件大家可以自己下载,如果使用其他的编译软件CubeMX 也是支持的。
注意: SetupSTM32CubeMX最新的版本是6.1.0,安装可简单,一路next 可以完成,但是这个软件是使用Java开发,需要使用Java的运行环境。安装 jre软件:jre-8u271-windows-x64,我会在百度云提供,大家可以自行下载最新版本。
02STM32CubeMx点亮LED灯
2.1 STM32CubeMx新建项目
菜单 File->New Project
新建项目如出现服务器的软件更新等,选择Cancel。
出现芯片选择界面,根据需求选择,这里选择野火指南者的芯片STM32F103VET6,LQFP100,100引脚的芯片,点击start project。
2.2 初始化代码
(1)根据原理图选择时钟。
在CubeMX中配置选择时钟,外部高速时钟。
(2)时钟配置
点击 Clock Configuration,输入外部8MHz,HCLK 72MHz。
(3)
GPIO 配置,根据LED引脚选择GPIO
以LED-G
绿灯为例,配置LED引脚PB0,低速,输出模式,上下拉,LED 为LED-G。
项目配置
(4)项目配置,如图所示,添加项目名称,可以选择项目生成的位置,工具链选择(这里使用MDK),堆栈设置,HAL库的位置选择。
(5)Code Generator 的设置
(6)代码生成
配置到这儿,cubeMX已经完成了时钟配置,GPIO配置。使用MDK打开项目就可以控制LED了,可以可出cubeMX主要完成代码初始化配置。
03MDK 项目编写应用代码
使用MDK打开工程
对于cubeMX生成的代码可以从图中看出,软件已经帮我们完成了基本的初始化,我们只需要在main.c while(1)主函数中添加我们的应用代码,不像标准库一样手动的添加外设初始化、时钟初始化的配置代码。
现在我们需要操作GPIO来控制LED的灯的亮 or 灭。GPIO的操作函数有很多,在stm32f1xx_hal_gpio.h 中查找。
我们在main.c 的主函数中while(1)循环中加入控制LED灯的代码,如下图所示:
HAL_Delay()是毫秒延迟函数,参数3000是3s。使用HAL_GPIO_WritePin() 写入RESET 和SET 控制写1和写0。
编译程序
编译程序没有出错,配置编译器进行程序下载。下载器的选择配置如下图所示。
04看效果如何
可以看出LED-绿色的灯美三秒闪烁一下。
关键字:STM32CubeMx 入门教程 点亮LED
引用地址:
STM32CubeMx入门教程(1):点亮LED
推荐阅读最新更新时间:2024-11-19 11:44
STM32CubeMX-实时时钟(RTC)
RTC简介 实时时钟(RTC)是一个独立的 BCD 定时器/计数器。RTC 提供具有可编程闹钟中断功能的日历时钟/日历。RTC 还包含具有中断功能的周期性可编程唤醒标志。系统可以自动将月份的天数补偿为 28、29(闰年)、30和 31 天。只要芯片的备用电源一直供电,RTC上的时间会一直走。 新建工程 本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。点击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。RTC选择内部唤醒(Internal WakeUp)开启RTC。开启外部低速晶振,PC14,PC15配置。 RTC时钟选择为外部低速晶振(LSE),频率为32.7
[单片机]
如何学习单片机?单片机c语言编程入门教程
我当初是自学单片机的,也用同样的方法带出过月入15K以上的徒弟。 我的方法不能说是最好的,但绝对是靠谱的,毕竟都是曾经自己趟过的路。 如果你还在纠结你的学历,纠结英语数学不好能不能学会的问题。 今天我就给你吃的定心丸,别的行业不敢说,单片机:稳! 学历,以及数学英语是决定你的天花板有多高,而不是门槛。 Ok,下面 干货开始 。 一、如何学习单片机? 看了很多帖子,单片机要学的东西很多,既要懂硬件又要会编程之类的话。 把很多人都吓尿在门外,其实这句话只对了一半。 单片机确实是要懂硬件和编程,但很多人忽略了 学习的深度的问题 。 我拿当初自学java来举例吧,光是java se就学了我1个多月,学完以后才发现只是入了门,接下
[单片机]
STM32CubeMX-多通道ADC-DMA-circular 传输
一,CubeMX生成工程 1,配置ADC引脚 2,时钟配置 3,ADC配置 4,打开 中断 5, DMA 配置 (这里选择 halfword 应该也可以,程序里面对应存储adc数据的变量也为halfword u16即可) 6,中断配置 红色标注为注意点,不清楚原理,ADC中断和DMZ的关系有待探明。 7,生成代码二,添加代码 数字标注处为添加部分 /** ****************************************************************************** * File Name : main.c * Date
[单片机]
stm32cubemx生成的代码灯不会亮的总结
这两天学stm32点灯,死活不亮。遇到两个问题。 1:时钟设置的时候要点一下才能使能 2:用cube4.2版本的同学注意了,软件bug我去。刚看帖子有讲果真可以,不过还没明白是为什么。 把上面的改成下面的就OK咯。图也是复制过来的。 就是主函数后面时钟配置里的这一句:RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
[单片机]
jz2440裸板开发之GPIO:点亮一个led灯(1)
实验目的:点亮一个led灯。(使用arm汇编指令) 实验原理: 在这里点亮一个nLED_2,其对用的引脚是GPF5,在GPIO中,每个引脚对有配置寄存器和数据寄存器,对于本例其配置寄存器为GPFCON:0x56000050,和数据寄存器GPFDATA:0x56000054.要设置GPF5(GPF5为GPFCON的第十和十一引脚,【11,10】=01时为输出)为输出引脚,并根据电路原理图,可知是设为低电平,才能点亮LED2.所以 =0x00000400). =0x00000000 实验步骤: 在linux下编辑源程序,然后利用自己编写的Makefile来对源程序的编译和链接生成bin文件,最后通过文件传输到wi
[单片机]
STM32CubeMX处理UTF-8编码中文注释存在的问题及解决方法
Windows环境下源代码使用UTF-8编码,STM32CubeMX创建的源文件中包含中文注释,那么使用STM32CubeMX重新生成源代码时会导致中文注释变乱码。 http://blog.csdn.net/zoomdy/article/details/54767178 mingdu.zheng at gmail dot com 存在的问题 STM32CubeMX修改配置并重新生成文件后,原来的中文注释中出现了乱码,见下图。 下图是乱码之前的代码。 按照STM32CubeMX的设计,在重新生成代码时只会修改STM32CubeMX生成的代码,保留用户在指定区域内编写的代码。 问题分析 多次实验后发现,只有在Windo
[单片机]
使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收
方法描述:使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收(非DMA方式)。 实际问题解决尝试: 1.HAL库函数只有接收定长数据HAL_UART_Receive()和HAL_UART_Receive_IT();函数声明如下: 通过查看论坛等找到的解决方式,一种是通过HAL_UART_Receive_IT(&huart1,(uint8_t *)buffer,1);来进入串口中断回调函数HAL_UART_RxCpltCallback();函数原型如下: 实际测试中,这种方式每次都需要去调用HAL_UART_Receive_IT函数,系统处理效率低。 2.通过审查生成的代码,如下所
[单片机]
点亮大功率LED供电线路的驱动器
作为一种为通用照明省电的方法,LED 的使用日益普及,而高效率驱动 LED 的方法也已变得必不可少。例如,Lumileds 公司的 Luxeon 器件带来了照明效果或房间照明。向几个 LED 供电也许只需要一个限流电阻器,但照明应用需要 20 个以上 LED 组成的串来提供一块区域的光亮。图 1 中的电路基于安森美(On Semiconductor)公司面向通用离线电源的 NCP1200A 型 100kHz PWM 电流式控制器,提供了一种低成本的离线恒流源来为多个 LED 供电。虽然设计师一般为它配置或提供电压源,但在本应用中,NCP1200A 提供了一个恒流源。图 2 和图 3 展示了该电路的特写。 一个全波桥式整
[电源管理]