美文网首页STM32
03实现LED流水灯和蜂鸣器

03实现LED流水灯和蜂鸣器

作者: MJUNy | 来源:发表于2022-12-02 14:30 被阅读0次
  • 初始化工程文件
  • 点亮LED
    操作STM32的GPIO有三个步骤
    使用RCC开启GPIO时钟 --> 使用GPIO_Init()函数初始化GPIO --> 使用输入或输出的函数控制GPIO
    总共涉及了RCC和GPIO两个外设
    1、RCC常用函数(stm32f10x_rcc.h)
    第一个参数选择外设,第二个参数使能或失能
    外设时钟控制
    2、GPIO常用函数(stm32f10x_gpio.h)
    主要是GPIO_Init()和8个读写函数
    GPIO常用函数
    3、GPIO参数说明
    模式选择参数说明
    4、添加延时函数,放在System下
    Delay.h和Delay.c
    5、LED闪烁
#include "stm32f10x.h"
#include "Delay.h"

int main(void) 
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//APB2时钟使能
    
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;//PA0
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//速度
    GPIO_Init(GPIOA, &GPIO_InitStruct);//GPIO初始化
    //对单个或多位进行操作
    //GPIO_SetBits(GPIOA, GPIO_Pin_0);//灭
    //GPIO_ResetBits(GPIOA, GPIO_Pin_0);//亮,低电平驱动
    //对单个位进行操作
    //GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
    //GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);
    while(1)
    {
        GPIO_ResetBits(GPIOA, GPIO_Pin_0);
        Delay_ms(1000);
        GPIO_SetBits(GPIOA, GPIO_Pin_0);
        Delay_ms(1000);
    }
}

6、验证开漏输出和推挽输出的驱动能力
将LED的长脚接PA0,断脚接+极,LED则为高电平驱动,在推挽模式下,LED仍然能正常点亮,说明推挽模式高低电平均有驱动能力。
而对于开漏模式,当LED为高电平驱动时,LED无法被点亮,只有当LED为低电平驱动时,才能被点亮,说明开漏模式下高电平有高阻态,低电平才有驱动能力。
7、流水灯(PA0~PA7)

#include "stm32f10x.h"
#include "Delay.h"

int main(void) 
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//APB2时钟使能
    
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//速度
    GPIO_Init(GPIOA, &GPIO_InitStruct);//GPIO初始化

    while(1)
    {
        GPIO_Write(GPIOA, ~0x0001);//0000 0000 0000 0001
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0002);//0000 0000 0000 0010
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0004);//0000 0000 0000 0100
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0008);//0000 0000 0000 1000
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0010);//0000 0000 0001 0000
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0020);//0000 0000 0010 0000
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0040);//0000 0000 0100 0000
        Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0080);//0000 0000 1000 0000
        Delay_ms(1000);
    }
}

也可以写成GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | ... ;


或操作实现

8、蜂鸣器

  • 选IO口
    这三个端口默认是JTAG调试端口,如果要用作普通端口的话,还需要再进行一些配置。


    一般不选三个端口

    用的PB12。

相关文章

  • 11.9知识点总结

    做项目 led灯 蜂鸣器

  • 跪求单片机大佬

    [题]LED流水灯左循环点亮:用AT89C51单片机和C51语言实现8个LED灯的左循环依次流水点亮,两个LED灯...

  • Linux 开发板常规测试

    【正点原子】I.MX6U用户快速体验V1.2.pdf 1. LED 与蜂鸣器测试 LED 测试 蜂鸣器测试 2. ...

  • 迅为IMX6ULL开发板Linux蜂鸣器实验

    在上一章讲解了添加LED灯驱动的整个流程和测试结果,这一章在来看一下蜂鸣器的驱动,蜂鸣器和 LED 灯的驱动其实是...

  • 初探有源蜂鸣器

    实现功能 按一次按钮,蜂鸣器响一次,点亮或熄灭LED 有源蜂鸣器:引脚一长一短,一般带有贴纸 Arduino代码 ...

  • Arduino 演奏音乐并显示音符

    功能说明 按下开关蜂鸣器演奏音乐,并在数码管显示音符。 线路 需要的元件: 蜂鸣器 LED数码管 开关 电阻8个 ...

  • 08 LED流水灯

    单片机STC89C52学习——07 LED闪烁 汇总:00 单片机STC89C52学习参考教程:普中科技 1 编程...

  • 9.19嵌入式知识点总结

    1.k1实现三个颜色LED灯的颜色转换 2.按下k2时蜂鸣器响 3.绑定函数EXTI 4.中断函数

  • 单片机开发,流水灯+蜂鸣器

    最默认的全图唤醒LED灯代码 单片机的LED唤醒,首先最麻烦的就是一个一个打,后面如果自己组织了许多的LED灯的话...

  • 单片机基础一 2020/3/17

    1.最小单片机系统:晶振,电源,复位电路2.点亮led灯: 3.led流水灯左右移程序 移位运算:右移左补0,左移...

网友评论

    本文标题:03实现LED流水灯和蜂鸣器

    本文链接:https://www.haomeiwen.com/subject/fiuefdtx.html