历史上的今天
今天是:2024年09月11日(星期三)
2019年09月11日 | STM32Cube-按键控制LED
2019-09-11 来源:eefocus
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等).
直观的STM32微控制器的选择和时钟树配置
微控制器图形化配置外围设备和中间件的功能模式和初始化参数
C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。
对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。
关于HAL库API的使用方法可以到ST官网下载:https://www.stmcu.com.cn/Index/search?search_keywords=UM1725
1.新建工程
打开STM32cubeMX软件,点击New Project。选择对应开板MCU(STM32F103ZET6)。

选择工程后进入工程界面,如下图所示。

2. 配置外设。

RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
GPIO口功能选择,PB5、PE5为LED2、LED3.找到对应管脚设置为GPIO_Output模式。(黄色引脚为该功能的GPIO已被用作其他功能,可以忽略。绿色表示管脚已使用)
PA0、PE2、PE3、PE4为按键输入管脚,选择GPIO_OUTPUT模式。

3. 时钟配置
时钟配置采用图形配置,直观简单。各个外设时钟一目了然。STM32最高时钟为72M,此处只有在HCLK处输入72,软件即可自动配置。(RCC选择外部高速时钟)。
有关配置讲解:http://blog.sina.com.cn/s/blog_554240170102vu80.html

4.功能外设配置

在配置框我们可以看到有几个区域,分别对应的功能设置如下
• Multimedia(多媒体):音频视频、LCD
• Control(控制):定时器
• Analog(模拟):DAC、ADC
• Connectivity(通讯连接):串口、SPI 、I2C、USB、ETH
• SYStem(系统):DMA(直接存储器存取)、GPIO、NVIC、RCC、看门狗
• middlewares(中间件): FreeRTOS、FATFS、LwIP、USB
此工程中DMA没用的不用配置,NVIC(嵌套中断向量控制器(Nested Vectored Interrupt Controller))配置中断优先级。RCC不用配置。


• GPIO Pin Level (管脚状态):高电平
• GPIO mode (管脚模式 ):推挽输出
• Maximum output speed (最大输出速度):高速
• User Label (用户标签):LED2(自定义)
更改用户标签,管脚配置图会显示管脚的标签。

4. 功耗计算
这个根据配置的外设计算功耗,不用理会。

5. 生成工程报告
点击Project –>Generate Reports或者点击快捷图标生成报告。系统会提示先创建一个工程项目。点击Yes设置工程。

输入工程名,选择工程路径(注意不要出现中文,否则可能出错)。工具链/IDE选择MDK-ARM V5。最后面可以设置堆栈大小,此处默认不作修改。

在Code Generator中找到Generated files框,勾选Generated periphera initialization as a pair of '.c/.h' files per IP。外设初始化为独立的C文件和头文件。

点击生成报告,工程目录下会生成txt文件和pdf文件,里面记录了我们刚才的设置。
6. 生成工程代码
点击Project –>Generate Code或者点击快捷图标生成工程代码。

点击Open Project打开工程。到此就配置好工程外设初始化。


7. 添加应用程序
在gpio.c文件中可以看到LED和KEY管脚的初始化函数。


在stm32f1xx_hal_gpio.h头文件中可以看到GPIO的操作函数。

①在main函数中的while循环中添加LED流水灯效果的应用程序,按键待会

了解固件库函数命名方法编写就很容易了,
一般是:HAL_[外设名]_[功能名]
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
这个就是写管脚函数,就是设置管脚是0还是1;
HAL_Delay(1000);
这是固件库里面的一个延时,用到的是滴答时钟;
至于程序下载就不说了。
② 按键讲解
在gpio.c文件中最后面的USER CODE BEGIN 2和USER CODE END 2中间添加如下四个函数。
(用户代码要加在USER CODE BEGIN N和USER CODE END N之间,否则下次重新生成代码后,会被删除)

上面添加了四个函数;

在main.c文件中的main函数的while循环中添加应用代码。代码中使用switch case语句。

再次编译程序;
总结:STM32Cube提供了固件库,用户可直接调用固件库函数来开发,并且可以很好的实现STM32-MCU全系列的代码一致性。同时STM32CubeMX工具提供的可视化引脚、外设、时钟等配置功能,可以帮助快速完成工程的建立、初始化。大大降低了开发者的工作量。
上一篇:STM32Cube-EXTI
下一篇:发现的STM32——SPI的问题
史海拾趣
|
奥笙公司软件部门招聘信息(北京职位) 公司简介 奥笙时代科技(北京)有限公司(www.orpheusys.com) 是成立于2007年的高科技企业,位于中关村腹地才智大厦,毗邻北大、清华和中科院,本公司与中科院声学研究所建立了战略合作关系, ...… 查看全部问答> |
|
请问T1管的集电极电阻到底该如何看,如何计算?因为以往的电路大都是一个集电极电阻RC接到电源,而这个图就不一样了,因为T1管的集电极接的是T2管,我就有些搞不太懂到底T1管的集电极电阻怎么算,有的人讲T1管的集电极电阻是R2+T2管C-B结的反偏电阻 ...… 查看全部问答> |
|
要做个项目,以arm9为基础,控制器是别人开发的,提供接口给我们,我们负责应用程序的开发,自己做的程序需要查询mysql数据库,所以想把mysql集成到板子里去,想请教下这么做是否可行,可行的话要如何做,能推荐几本参考书?谢谢… 查看全部问答> |
|
序: 搞了几块aic3256,按照TI公司的原理图做了最小系统,想用F2812来驱动,结果老是不行,好,我想,既然这样,那就从最简单的开始一步一步慢慢来。于是种种问题就浮出水面…… ...… 查看全部问答> |
|
步入社会,你每天要和形形色色的人打交道,在社会的每个角落,你都不可能是孤立的,你必须要通过与其他人合作完成自己的工作任务。如果你在公司里工作,那么,你是否具有团队精神,直接关系到你的业绩。一些大公司招聘人才时,十分注重人才的团 ...… 查看全部问答> |
|
安泰测试维修中心根据多年的维修经验,帮大家分析示波器的几种特殊故障,供广大的电子仪器维修者参考和学习。 一、无扫描线 出现无扫描线故障时应先检查电源电路、示波管电路、触发扫描电路、X轴放大器等的工作是否正常。若这些部分工作都正常 ...… 查看全部问答> |




