小熊派02—使用GPIO使LED闪烁
创建第一个工程
1.打开STM32CubeMX软件,点击File
,然后New Project
。或者也可以通过万能新建快捷键Ctrl+N。
2.接着输入自己的芯片型号,小熊派是STM32L431RCT6
,我们可以把常用的芯片收藏,下次就可以直接点击右上角的大五角星,直接就可以选择,不需要再搜索了。也可以通过芯片的内核、系列、线程等等来筛选你想要的芯片。
3.配置时钟源
- 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
- 如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:
4.配置GPIO模式:
查小熊派开发板原理图,可知连接PC13管脚,高电平点亮。
在STM32CubeMX中配置PC13为输出,鼠标左键点击,选择GPIO_Output
。
这里给PC13引脚添加一个user_label后,cubemx软件会在main.h文件中添加一个宏定义,如图,我们可以使用LED_GPIO_Port,
LED_Pin来表示这个引脚,提高了程序的可移植性。如果没有该user_label,就需要使用GPIOC,GPIO_PIN_13
来表示这个引脚。
5.配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:
6.工程配置
代码管理
最后点击右上角的蓝色按钮GENERATE CODE
,创建工程。此时的工程已帮我们初始化好了,我们只需要写我们的功能代码就好了。点击打开工程。
写用户代码
- 打开工程后,我们可以看到这几个文件。
关于CMSIS,大家可以看下这篇大佬博客:STM32库文件结构及CMSIS介绍
- 在开始之前我们最好先编译一下,这样引用的头文件就可以在keil中打开了。在头文件的最后我们可以找到我们需要的函数。
- 双击打开
stm32l4xx_hal_gpio_.h
文件,鼠标托到最后一行可以看到:
初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
将初始化之后的引脚恢复成默认的状态–各个寄存器复位时的值
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
管脚基本操作,读管脚、写管教、电平翻转
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读管脚
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);//写管脚,也叫置位管脚
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//电平翻转
如果一个管脚的当前状态是1,读管脚值使用锁定,当这个管脚电平变化时保持锁定时的值,直到重置才改变
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面要介绍的回调函数。实际调用的是下边的中断回调函数
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
中断回调函数,可以理解为中断函数具体要响应的动作。此处是一个虚函数,需要时我们再重新定义一个同名的函数即可。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
- 接下来写我们的第一个代码,写一个LED灯闪烁的功能程序。
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 */HAL_Init();SystemClock_Config();/* Initialize all configured peripherals */MX_GPIO_Init();while (1){/* USER CODE END WHILE */HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);HAL_Delay(500);//这里的单位是ms!/* USER CODE BEGIN 3 */}
需要注意的是我们尽量把代码写在两个USER CODE 之间,不然在用STM32CubeMX更新配置时写在外面的代码会被删除。
- 编译通过后,在下载到开发板之前,不要忘了设置下载器
- 最后下载到开发板,链接开发板,点击
LOAD
或者快捷键F8
7.实现效果,LED间隔0.5秒亮灭,
小熊派02—使用GPIO使LED闪烁相关推荐
- STM32F103RC串口发送数据1使LED闪烁---串口助手作为主机发送数据1,单片机作为从机接收
主要是一个函数的使用, 串口助手发送的数据1 这个是接收1 if(USART_RX_BUF[0]=='1') 主函数这样写会 接收数据1 使LED闪烁 int main(void){ u8 t;u8 ...
- 使用STM32CubeMX新建小熊派的STM32L431RCT6工程实现LED灯闪烁
目录 作者介绍 工程生成步骤 双击打开软件 新建一个工程 芯片选型 配置GPIO 配置系统时钟 设置目录.工程名.编辑使用的IDE等 生成工程 打开工程 打开工程的小插曲:STM32 Keil新建工程 ...
- OpenHarmony HDF LED驱动开发 基于小熊派Micro
文章目录 一.效果展示 二.led控制程序 2.1.led驱动程序 2.1.1.驱动程序 2.1.2.驱动配置 2.2.C应用程序 2.3.JS应用 2.3.1.JS代码 2.3.2.C++接口 一. ...
- STM32之定时器中断控制LED闪烁
上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...
- STM32F103C8T6实现LED闪烁
今天是学习定时器和中断的配置,并通过定时器实现LED间隔一秒闪烁. LED在最小系统板中位置如下: #include "led.h"void Led_Init(void) {GPI ...
- 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯
小熊派gd32f303学习之旅(7)-使用PWM实现LED呼吸灯 一.前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd3 ...
- 小熊派回顾:学习GPIO,学习ADC
目录 GPIO GPIO API介绍 wifiiot_gpio.h接口 wifiiot_gpio_ex.h接口 查看LED对应的GPIO引脚 操作GPIO点亮LED 编写业务代码 编译 烧录 读取GP ...
- 小熊派:用OpenHarmory3.0点亮LED
摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...
- 【华为云技术分享】玩转小熊派BearPi(一)使用STM32CubeMX + HAL点亮一个LED
最近刚刚入手了一块小熊派开发板,玩了一下感觉这块核心板可玩性挺高,板载ST-Link,240*240LCD小屏幕,而且体积非常小巧,可以说是入门物联网的一块非常不错的板子,先放上一张靓照: 这块小熊派 ...
最新文章
- 在微服务架构中做机器学习,真的太难了
- js获取html中img src属性值,javascript - js匹配img标签中的 src属性的值的正则怎么写?...
- C++知识点56——类模板(1、模板类的介绍)
- [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
- 小米6关闭位置服务器,关闭这6个设置,让你的小米手机从回青春,再战3年
- 老男孩教育每日一题-第108天-php-fpm优化关闭危险参数有哪些?
- SnapGene mac 5.3.1 中文分子生物学可视化工具及教程
- dynamic和匿名对象
- Object关于属性property的静态方法
- 图解 ElasticSearch 原理,太牛了
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(4) - 比较指令
- iPhone又降价了!京东、苏宁安排上了 iPhone XS系列最高直降1700元
- treeview找到节点并展开_我们从100个经典韩剧中,找到8个「神套路」,这样写抖音剧本个个都是爆款!...
- Datawhale数据挖掘项目之task2
- Python编码格式导致的csv读取错误
- android 编程w3c,w3cschool-编程学院
- 局域网 访问计算机 软件,局域网查看工具
- sunlight的中文_Diana Vickers的Sunlight中文歌词。
- HTML下拉菜单代码实现
- tkinter运行时出现无响应问题
热门文章
- 邻接表转化为逆邻接表
- 【网络维修 IP重复 休眠模式 计划关机】维修网络的基本命令,IP重复解决和查看,携带笔记本发热 休眠模式,计划关机和取消
- dynamic time warping matlab,科学网—【科研速记】Dynamic time warping - 李冰的博文
- 我的世界服务器键位显示怎么开,客户端设置方法 游戏键位及画面设置
- AI 收藏夹 Vol.001:当你的语音助手不再温顺
- 短视频app开发技术细节
- c语言 复制二维数组,C语言 二维数组复制、清零及打印显示(示例代码)
- 【Spring】源码编译
- IC读写器银河麒麟操作系统适配认证测试报告
- 荣誉 | 百望云入选甲子光年“2022最具商业潜力区块链Cool Vendor”