创建第一个工程

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,创建工程。此时的工程已帮我们初始化好了,我们只需要写我们的功能代码就好了。点击打开工程。

写用户代码

  1. 打开工程后,我们可以看到这几个文件。

关于CMSIS,大家可以看下这篇大佬博客:STM32库文件结构及CMSIS介绍

  1. 在开始之前我们最好先编译一下,这样引用的头文件就可以在keil中打开了。在头文件的最后我们可以找到我们需要的函数。
  2. 双击打开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);
  1. 接下来写我们的第一个代码,写一个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更新配置时写在外面的代码会被删除。

  1. 编译通过后,在下载到开发板之前,不要忘了设置下载器
  2. 最后下载到开发板,链接开发板,点击LOAD或者快捷键F8

    7.实现效果,LED间隔0.5秒亮灭,

小熊派02—使用GPIO使LED闪烁相关推荐

  1. STM32F103RC串口发送数据1使LED闪烁---串口助手作为主机发送数据1,单片机作为从机接收

    主要是一个函数的使用, 串口助手发送的数据1 这个是接收1 if(USART_RX_BUF[0]=='1') 主函数这样写会 接收数据1  使LED闪烁 int main(void){ u8 t;u8 ...

  2. 使用STM32CubeMX新建小熊派的STM32L431RCT6工程实现LED灯闪烁

    目录 作者介绍 工程生成步骤 双击打开软件 新建一个工程 芯片选型 配置GPIO 配置系统时钟 设置目录.工程名.编辑使用的IDE等 生成工程 打开工程 打开工程的小插曲:STM32 Keil新建工程 ...

  3. 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++接口 一. ...

  4. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  5. STM32F103C8T6实现LED闪烁

    今天是学习定时器和中断的配置,并通过定时器实现LED间隔一秒闪烁. LED在最小系统板中位置如下: #include "led.h"void Led_Init(void) {GPI ...

  6. 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯

    小熊派gd32f303学习之旅(7)-使用PWM实现LED呼吸灯 一.前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd3 ...

  7. 小熊派回顾:学习GPIO,学习ADC

    目录 GPIO GPIO API介绍 wifiiot_gpio.h接口 wifiiot_gpio_ex.h接口 查看LED对应的GPIO引脚 操作GPIO点亮LED 编写业务代码 编译 烧录 读取GP ...

  8. 小熊派:用OpenHarmory3.0点亮LED

    摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...

  9. 【华为云技术分享】玩转小熊派BearPi(一)使用STM32CubeMX + HAL点亮一个LED

    最近刚刚入手了一块小熊派开发板,玩了一下感觉这块核心板可玩性挺高,板载ST-Link,240*240LCD小屏幕,而且体积非常小巧,可以说是入门物联网的一块非常不错的板子,先放上一张靓照: 这块小熊派 ...

最新文章

  1. 在微服务架构中做机器学习,真的太难了
  2. js获取html中img src属性值,javascript - js匹配img标签中的 src属性的值的正则怎么写?...
  3. C++知识点56——类模板(1、模板类的介绍)
  4. [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
  5. 小米6关闭位置服务器,关闭这6个设置,让你的小米手机从回青春,再战3年
  6. 老男孩教育每日一题-第108天-php-fpm优化关闭危险参数有哪些?
  7. SnapGene mac 5.3.1 中文分子生物学可视化工具及教程
  8. dynamic和匿名对象
  9. Object关于属性property的静态方法
  10. 图解 ElasticSearch 原理,太牛了
  11. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(4) - 比较指令
  12. iPhone又降价了!京东、苏宁安排上了 iPhone XS系列最高直降1700元
  13. treeview找到节点并展开_我们从100个经典韩剧中,找到8个「神套路」,这样写抖音剧本个个都是爆款!...
  14. Datawhale数据挖掘项目之task2
  15. Python编码格式导致的csv读取错误
  16. android 编程w3c,w3cschool-编程学院
  17. 局域网 访问计算机 软件,局域网查看工具
  18. sunlight的中文_Diana Vickers的Sunlight中文歌词。
  19. HTML下拉菜单代码实现
  20. tkinter运行时出现无响应问题

热门文章

  1. 邻接表转化为逆邻接表
  2. 【网络维修 IP重复 休眠模式 计划关机】维修网络的基本命令,IP重复解决和查看,携带笔记本发热 休眠模式,计划关机和取消
  3. dynamic time warping matlab,科学网—【科研速记】Dynamic time warping - 李冰的博文
  4. 我的世界服务器键位显示怎么开,客户端设置方法 游戏键位及画面设置
  5. AI 收藏夹 Vol.001:当你的语音助手不再温顺
  6. 短视频app开发技术细节
  7. c语言 复制二维数组,C语言 二维数组复制、清零及打印显示(示例代码)
  8. 【Spring】源码编译
  9. IC读写器银河麒麟操作系统适配认证测试报告
  10. 荣誉 | 百望云入选甲子光年“2022最具商业潜力区块链Cool Vendor”