当前位置: 首页 > news >正文

江苏建设网站公司合肥建设工程质量监督局网站

江苏建设网站公司,合肥建设工程质量监督局网站,购买 做网站 客户,全国加盟网站大全LED原理图如图所示: 代码 DS0和DS1每过500ms一次交替闪烁,实现类似跑马灯的效果 GPIO输出配置步骤 (1)使能对应GPIO时钟 STM32在使用任何外设之前,我们都要先使能其时钟(下同)。本实验用到…

LED原理图如图所示: 

代码

DS0和DS1每过500ms一次交替闪烁,实现类似跑马灯的效果

GPIO输出配置步骤

(1)使能对应GPIO时钟

STM32在使用任何外设之前,我们都要先使能其时钟(下同)。本实验用到PB5和PE5 两 个IO 口,因此需要先使能GPIOB和GPIOE 的时钟

(2)设置对应 GPIO工作模式(推挽输出)

本实验GPIO使用推挽输出模式,控制LED亮灭,通过函数HAL_GPIO_Init设置实现。

(3)控制GPIO 引脚输出高低电平

在配置好GPIO工作模式后,我们就可以通过HAL_GPIO_WritePin 函数控制GPIO 引脚 输 出高低电平,从而控制LED的亮灭了。

led.h

#ifndef _LED_H
#define _LED_H
//led初始化
void led_init(void);
#endif

led.c

#include "./BSP/LED/led.h"
#include "./SYSTEM/sys/sys.h"
//led初始化
void led_init(void){
    GPIO_InitTypeDef g_gppio_struct;
    __HAL_RCC_GPIOE_CLK_ENABLE();  //使能时钟--PE5--LED1
    __HAL_RCC_GPIOB_CLK_ENABLE();  //使能时钟--PB5--LED0
    
    g_gppio_struct.Pin=GPIO_PIN_5;
    g_gppio_struct.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    g_gppio_struct.Pull=GPIO_NOPULL;  //无上下拉
    g_gppio_struct.Speed=GPIO_SPEED_FREQ_HIGH;  //高速
    HAL_GPIO_Init(GPIOE,&g_gppio_struct);  //初始化LED1
    
    g_gppio_struct.Pin=GPIO_PIN_5;
    g_gppio_struct.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    g_gppio_struct.Pull=GPIO_NOPULL;  //无上下拉
    g_gppio_struct.Speed=GPIO_SPEED_FREQ_HIGH;  //高速
    HAL_GPIO_Init(GPIOB,&g_gppio_struct);  //初始化LED0
}

1、使能外设时钟

我们要使用某个外设,必需先使能该外设时钟

(1)HAL库使能某个外设时钟的方法 

__HAL_RCC_GPIOx_CLK_ENABLE();  

例如:LED0被PB5管脚控制,则xB

(2)HAL库禁止某个外设时钟的方法 

__HAL_RCC_GPIOx_CLK_DISABLE();  

2、HAL_GPIO_Init 函数

函数声明:

void HAL_GPIO_Init (GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); 

//用于配置GPIO功能模式,还可以设置EXTI功能

2.1 形参1:GPIO_TypeDef *GPIOx

是端口号,GPIOA~GPIOE

2.2 形参2:GPIO_InitTypeDef *GPIO_Init

是GPIO_InitTypeDef类型的结构体变量

typedef struct{
  uint32_t Pin;       /*!< 指定要配置的 GPIO 引脚。-------引脚号
                           此参数可以是 @ref GPIO_pins_define 的任何值 */

  uint32_t Mode;      /*!< 指定所选引脚的模式。-------模式设置
                           此参数可以是 @ref GPIO_mode_define 的值 */

  uint32_t Pull;      /*!< 指定所选引脚的 Pull-up 或 Pull-Down 激活。-------上拉下拉设置
                           此参数可以是 @ref GPIO_pull_define */

  uint32_t Speed;     /*!< 指定选定引脚的速度。-------速度设置
                           此参数可以是 @ref GPIO_speed_define 的值 */
} GPIO_InitTypeDef;

2.2.1 Pin

表示引脚号,范围:GPIO_PIN_0 到 GPIO_PIN_15,另外还有 GPIO_PIN_All 和 GPIO_PIN_MASK可选

例如: LED0被PB5管脚控制,则为GPIO_PIN_5

2.2.2 Mode

是GPIO 的模式选择,有以下选择项: 

#define  GPIO_MODE_INPUT    0x00000000u   /*!< 输入模式                   */
#define  GPIO_MODE_OUTPUT_PP    0x00000001u   /*!< 推挽输出模式                 */
#define  GPIO_MODE_OUTPUT_OD    0x00000011u   /*!< 开漏输出模式                */
#define  GPIO_MODE_AF_PP                        0x00000002u   /*!< 推挽式复用模式     */
#define  GPIO_MODE_AF_OD                        0x00000012u   /*!< 开漏式复用    */
#define  GPIO_MODE_AF_INPUT                     GPIO_MODE_INPUT          /*!< Alternate Function Input Mode         */

#define  GPIO_MODE_ANALOG                       0x00000003u   /*!< Analog Mode  */

#define  GPIO_MODE_IT_RISING                    0x10110000u   /*!< External Interrupt Mode with Rising edge trigger detection          */
#define  GPIO_MODE_IT_FALLING                   0x10210000u   /*!< External Interrupt Mode with Falling edge trigger detection         */
#define  GPIO_MODE_IT_RISING_FALLING            0x10310000u   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */

#define  GPIO_MODE_EVT_RISING                   0x10120000u   /*!< External Event Mode with Rising edge trigger detection               */
#define  GPIO_MODE_EVT_FALLING                  0x10220000u   /*!< External Event Mode with Falling edge trigger detection              */
#define  GPIO_MODE_EVT_RISING_FALLING           0x10320000u   /*!< External Event Mode with Rising/Falling edge trigger detection       */

2.2.3 Pull

用于配置上下拉电阻,有以下选择项:

#define  GPIO_NOPULL             0x00000000u   /*    无上下拉  */
#define  GPIO_PULLUP             0x00000001u   /*     上拉         */
#define  GPIO_PULLDOWN      0x00000002u   /*     下拉         */ 

2.2.4 Speed

用于配置GPIO 的速度,有以下选择项:

#define  GPIO_SPEED_FREQ_LOW              (GPIO_CRL_MODE0_1)     /*  低速  */
#define  GPIO_SPEED_FREQ_MEDIUM        (GPIO_CRL_MODE0_0)    /*  中速  */
#define  GPIO_SPEED_FREQ_HIGH             (GPIO_CRL_MODE0)        /*  高速  */ 

main.c

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
int main(void){
    //固定代码
    HAL_Init();
    sys_stm32_clock_init(RCC_PLL_MUL9);
    delay_init(72);

    
    led_init();
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);  //点亮
    while(1){
        HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);  //点亮
        delay_ms(200);
        HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);  //熄灭
        delay_ms(200);
        
        //上述等价于
        /*HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
        delay_ms(200);*/
    }
}

每一个文档在最后都要空2行,不然会出现警告 

1、HAL_GPIO_WritePin 函数 

是 GPIO 口的写引脚函数。其声明如下:

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

(1)形参1:端口号,可以选择范围:GPIOA~GPIOG

(2)形参2:引脚号,可以选择范围:GPIO_PIN_0~GPIO_PIN_15

(3)形参3:要设置输出的状态,有两个选择:GPIO_PIN_SET表示高电平,GPIO_PIN_RESET表示低电平

2、HAL_GPIO_TogglePin 函数

是 GPIO 口的电平翻转函数。其声明如下:

void HAL_GPIO_TogglePin (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

(1)形参1:端口号,可以选择范围:GPIOA~GPIOG

(2)形参2:引脚号,可以选择范围:GPIO_PIN_0~GPIO_PIN_15

http://www.dtcms.com/a/544815.html

相关文章:

  • js基础:07、作用域(全局作用域、函数作用域)、声明提前(变量的声明提前、函数的声明提前)、执行上下文(this)、新创建对象方法、构造函数
  • 七牛云到阿里云对象存储回源配置
  • Ant Design Landing模版使用教程-react-npm
  • ChatGPT-4o在自然科学中的应用:统计建模、机器学习与时空数据分析实战
  • 仓颉语言包与模块系统深度解析
  • 营销型网站建设制作多少钱做网站电销
  • windows装wsl ubuntu24.04 ,里面装qemu ,然后装mac os (windows也可以直接qemu安装macos)(未实践)
  • Tongweb7启动脚本说明
  • 【Linux】进程初阶(2)——进程状态
  • WSL2 Ubuntu cuda驱动问题解决和CUDA Toolkit安装
  • 深圳市住房建设局网站个性婚纱摄影
  • SQLite 约束 (Constraints) 面试核心知识点
  • 使用J-Link Attach NXP S32K3导致对应RAM区域被初始化成0xDEADBEEF
  • 电子商务网站建设与维护展望分销系统微信
  • 变量与可变性
  • STM32 GPIO其他少见的库函数解析
  • 云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
  • 百度免费网站空间中国铁建股份有限公司
  • 【Git】版本更新
  • 网站建设与维护就业前景电商培训类网站模板下载
  • Android电池优化和前后台任务
  • 使用 Java 将 Excel 工作表转换为 CSV 格式
  • Kotlin基础类型扩展函数使用指南
  • 城市建设网站做印刷品去哪个网站
  • 怎么查网站到期时间php网站搭建环境
  • 汽车行业SCRM:企业微信+服务商模式破解汽车服务行业痛点的案例分析
  • 【第五章:计算机视觉-项目实战之推荐/广告系统】3.精排算法-(4)重排算法:MMR、DPP原理精讲
  • Xamarin.Forms菜鸟笔记--10.获取点击/滑动 Image位置
  • 网络环路“侦探”指南:如何快速定位与根除网络风暴
  • Android 自定义Switch