STM32小实验二--流水灯

1.实验目的

LED灯交替闪烁

2.实验清单

  • STM32
  • ST-Link

3.代码

同上一个点亮LED的实验一样创建led.c,led.h两个文件编写代码,

3.1led.c

c 复制代码
#include "led.h"
#include "sys.h"
//初始化GPIO函数
void led_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;
    //打开时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    //调用GPIO初始化函数
    gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;
    gpio_initstruct.Pull = GPIO_PULLUP;
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB,&gpio_initstruct);
    //关闭LED
    led1_off();
    led2_off();
}
//点亮LED1的函数
void led1_on(void)
{
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); //拉低LED1引脚,点亮LED1
}
//熄灭LED1的函数
void led1_off(void)
{
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); //拉高LED1引脚,熄灭LED1
}
//翻转LED1状态的函数
void led1_toggle(void)
{
    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}
//点亮LED2的函数
void led2_on(void)
{
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET); //拉低LED2引脚,点亮LED2
}
//熄灭LED2的函数
void led2_off(void)
{
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET); //拉高LED2引脚,熄灭LED2
}
//翻转LED2状态的函数
void led2_toggle(void)
{
    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
}

这个代码和第一个实验的代码很像,因为需要两颗LED的亮灭,所以在第十行的位置加一个或的符号,再将引脚写入就可以同时初始化两个引脚了。

然后下面的函数就是复制粘贴,将引脚号修改即可。要注意不要忘了在LED初始化时将LED2关闭的代码。

3.2main.c

c 复制代码
#include "sys.h"
#include "delay.h"
#include "led.h"
int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    led_init();
    while(1)
    { 
        led1_on();
        delay_ms(500);
        led1_off();
        led2_on();
        delay_ms(500);
        led2_off();
    }
}

.c文件里的代码逻辑很简单,就是点亮LED1,等待0.5秒,关闭LED1,同时点亮LED2,等待0.5秒,关闭LED2,一直循环就可以实现。
完结

相关推荐
天天爱吃肉82183 小时前
【工程师硬件学习笔记:串口‑总线体系与三电试验室异构系统集成深度实战】
大数据·笔记·python·嵌入式硬件·学习·汽车
hsjiasb12 小时前
FreeRTOS学习(二十三)——消息缓冲区(Message Buffer)
stm32·单片机·嵌入式硬件·学习·freertos
我是海飞14 小时前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理
沸速存储16 小时前
CPU 和 GPU 核心差别在哪?为什么 AI 训练离不开 GPU
服务器·人工智能·科技·嵌入式硬件·电脑
wuyk55516 小时前
2.队列:先进先出的线性数据结构
c语言·数据结构·stm32·单片机
我不会JAVA!17 小时前
【无标题】
嵌入式硬件·h.264
芯岭技术郦17 小时前
OM6625A芯片 Timer 定时器计数模式使用说明
stm32·单片机·嵌入式硬件
Dr.kangder19 小时前
嵌入式面试总结(八)——大小端
嵌入式硬件·面试·职场和发展·架构·嵌入式
zlinear数据采集卡20 小时前
D223的SRAM硬件记录仪:外部触发与瞬态波形捕获方案
arm开发·嵌入式硬件·fpga开发·开源
zcmodeltech21 小时前
双碳沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的碳捕集-零碳园区-综合能源全场景联动方案
stm32·嵌入式硬件·能源·嵌入式实时数据库·多分类