Stm32点亮LED灯(HAL库和标准库)

这篇具有很好参考价值的文章主要介绍了Stm32点亮LED灯(HAL库和标准库)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 原理

1.1 具象化理解

        日常生活中我们要点亮房间的灯,就是按开关。背后的本质,用初中物理的话说就是两个要素:形成闭合回路;给用电器电压。

1.2 回归板子

        单片机就是一个小型的集成电路,LED作为电路中的用电器也需要这两个要素。需要注意的是,发光二极管具有单向导通性,不同的单片机电路情况不同,点亮led需要给高电压还是低电压需要结合板子原理图具体分析。

二. 看懂原理图

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图1 两种led电路示意图

        点亮led的关键在于同led连接的IO口输出给led电平的高低状况,也就是一个led灯是高电平点亮还是低电平点亮。图1我给出了两种点亮情况的电路示意图,表示板子在实际运行过程中的工作原理,便于大家理解,但是灰色方框的内容在板子原理图中不会体现。

        ①中的led一端接IO口,另一端接VCC(电源)。根据发光二极管单向导电性可知,IO口输出低电平时,led点亮。所以,①电路表示led低电平点亮。

        同理可知,②电路另一端接GND(地),所以,②电路表示led高电平点亮。

三. 配置

3.1  标准库

3.1.1  流程(猪肉白菜饺子版)

        时钟(定上闹钟几点和面几点包饺子)——初始化GPIO(需要的猪肉白菜盐什么材料全准备全)——主函数(动手包饺子)

3.1.2  代码

        首先,配上时钟。

        然后,初始化GPIO。(为什么是GPIO)因为只有一个点灯的功能,所以只用改变输出的高低电平就行了。初始化有一个套路(总分总结构);GPIO有三个固定成分:MODE(模式:输出模式)、SPEED(频率:一般都所用板子的最高频率)、PIN(LED的引脚),这两个要素构成了GPIO的初始化。            (我会单独开一篇如何学会自己配置初始化固定成分后面的东西。)

//led.c代码
#include "led.h"
void LED_Init(void)
{
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	 //使能PC端口时钟

//总分总形式
 GPIO_InitTypeDef  GPIO_InitStructure;//结构体开头
//三个固定成分
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				 //PC13端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
//结尾
 GPIO_Init(GPIOC, &GPIO_InitStructure);					 //根据设定参数初始化GPIOC.13
}

        最后写主函数,就是你想让灯亮几下,亮多久,自行定义。

//main.c文件代码
#include "delay.h"
#include "main.h"
#include "stm32f10x.h"


 int main(void)
 {	
	delay_init();	    	 //延时函数初始化	  
	LED_Init();		  	//初始化与LED连接的硬件接口
	while(1)
	{
//以下可以自己定义
	GPIO_SetBits(GPIOC,GPIO_Pin_13);
    delay_ms(500);
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	delay_ms(500);	//延时300ms
	}
 }

3.2  HAL库

3.2.1  CubeMx配置

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图2 配置1

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图3 配置2


Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图4 配置3

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图5 配置4

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图7 配置六

3.2.2  代码

        因为Cube已经把需要的初始化都配好了,所以写下主函数就可以。

注意:1.写主函数之前先编译,排除配置错误。

           2.代码要写在BEGIN和END中间,否则修改Cube配置再次生成的时候代码会被清空!

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图8 注意事项

        主要要学会HAL_GPIO_TogglePin(电平翻转函数)和HAL_GPIO_WritePin(控制电平高低函数)。具体配置方法有两种:

        第一种:写函数的时候会自动弹出所需要配置的参数如图9所示,按照提示配置即可。

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图9

        如果想进一步了解函数,用第二种方法:选中想了解的函数,右击,选择查看定义如图10所示。

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图10

        定义里面有函数的简介和函数所需配置参数的介绍如图11所示。在图11显示的整个.c文件里有关于GPIO所有的函数,如果想要开发更多GPIO写法,在该文件夹里找到心怡函数按照函数定义和介绍来实现功能配置即可。

Stm32点亮LED灯(HAL库和标准库),零基础STM32入门(快速上手),stm32,嵌入式硬件,单片机

图11

 //主函数代码中在while函数中添加
 while (1)
  {
    /* USER CODE END WHILE */
    
    /* USER CODE BEGIN 3 */
//自定义部分
        HAL_Delay(500);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);//电平翻转函数
		HAL_Delay(500);

  }
  /* USER CODE END 3 */

四. 总结

       我把基础知识用很通俗的语言讲解出来了,就是希望大家能很快的理解并掌握应用,最终爱上嵌入式。虽然点灯很简单,但是只有先把点灯认真理解了,自己学着例程写才能更轻松扎实的学习后面的知识,才能让你真正会自己写代码。而不是学了很久之后还是没办法脱离别人的代码,只会照着例程改。文章来源地址https://www.toymoban.com/news/detail-828386.html

到了这里,关于Stm32点亮LED灯(HAL库和标准库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32三种开发方式及标准库和HAL库的编程差异

     三种开发方式 STM32基于标准库函数和HAL库编程差异_stm32库函数和hal库-CSDN博客 本文目的是以串口通信来简要分析STM32使用标准库函数和HAL库函数编程的差异。目录(一)开发方式1.配置寄存器2.库函数3.HAL库(二)库函数与HAL库对比1.串口通信实验2.库函数与HAL库比较(三)总

    2024年02月07日
    浏览(30)
  • freemodbus移植进STM32(包含HAL库和标准库两种方法)

    基于freemodbus1.6 使用HAL库 软件:stm32cubemx stm32cubeide 后续会更新标准库的移植。以及rtos下的移植(尽量) 这个获取方法网上到处都是,不细说了。 新建工程只列出了与移植freemodbus相关的设置 这里我使用的是485通信,所以额外使能了一个引脚 使能一个定时器,这里我用的是

    2024年02月05日
    浏览(37)
  • STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

    单片机型号及压力传感器: STM32F103C8T6 最小系统板 压力传感器选用的是薄膜压力传感器 生活中经常遇到需要测量压力值,因此,考虑到这样的需求从网上买了一个薄膜压力传感器,实物图如下: 柔性薄膜压力传感器的 产品特点 : 超薄,厚度小于0.3mm 响应速度快 寿命长,通

    2024年02月02日
    浏览(35)
  • stm32标准库和HAL库的对比学习3.《学习外部中断EXIT和应用》

            本人是大一的学生,学习了一段时间的stm32,此系列博客为个人的学习笔记,方便个人复习,如有错误或问题,非常非常欢迎大家来大力指正。 简单用文字说一下原理。 如果先要清楚了解建议去b站看一下keysking大佬的教程,很有趣易懂( 本视频的部分图也来自keys

    2024年01月19日
    浏览(38)
  • STM32/51单片机编程入门(点亮LED)

    目录 一、Proteus电路仿真软件上的C51程序设计及仿真 1.原理图绘制 2.Keil5上的51程序编写 3.仿真 二、安装mdk5软件和stm32包,完成一个stm32的简单程序 1.mdk5软件中编写程序 2.stm32仿真程序调试 三、STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤

    2024年02月02日
    浏览(50)
  • stm32标准库和HAL库的对比学习4.《学习时钟源,时钟树与内部时钟和外部时钟的用法》

            本人是大一的学生,学习了一段时间的stm32,此系列博客为个人的学习笔记,方便个人复习,如有错误或问题,非常非常欢迎大家来大力指正。         简单用文字说一下原理。         如果先要清楚了解建议去b站看一下keysking大佬的教程,很有趣易懂(本

    2024年02月21日
    浏览(34)
  • 最小系统板 STM32入门,点亮 LED 灯(STM32F103C6T6)

    Hello, I’m Shendi 最近开整单片机,这里记录一下 我目前配置,最小系统板 STM32F103C6T6,ST-LINK V2 最小系统板,通电后PWR灯会亮,ST-LINK插上电脑后也会亮 PDD上买的,没有焊接的(就是有个洞被焊起来了),加起来不超过30块 实物图 其中ST-LINK有八个引脚,上面都标出了对应的作用了

    2023年04月08日
    浏览(28)
  • STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    (部分图引自于ATK) 前情提要(基本定时器) 点此进入 通用定时器类别 通用定时器和基本定时器相比大致的工作方式是相似的,不过通用定时器比基本定时器多了一些很好用的功能,比如: 外部输入捕获 输出比较 输出PWM 时钟源 CubeMX为我们提供了配置时钟的非常方便的工

    2024年04月15日
    浏览(74)
  • 使用标准库和HAL库的STM32单片机进行串口通信/解决因例程为HAL库的传感器,而其他模块都是标准库,需要将数据用串口传送给标准库的单片机的相关问题

    (本文使用STM32F103C8T6,在CubeMX里演示用的是RBT6,但实际上引脚是一样的)         本文 着重解决一个大工程中,某些传感器的例程是HAL库的,而其他模块(或算法)都是标准库,导致难以移植的问题。 本文的解决方法是:使用一片单片机用HAL库(CubeMX)配置例程,然后

    2024年02月06日
    浏览(44)
  • 使用STM32点亮LED

    假设你手中已有 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED,并搭建了电路,分别GPIOA-5、GPIOB-9、GPIOC-14 这3个引脚上控制LED灯(最高时钟2Mhz),轮流闪烁,间隔时长1秒。 1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数; 2)用C语言 寄存器方式编程实

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包