STM32 LED灯编程

本文介绍了如何使用STM32F100R8在PB3和PB4接口进行LED灯控制。通过低电平使LED亮起,代码简洁,直接在main.c和main.h文件中实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原理图

说明:STM32F100R8
接口:PB3和PB4
原理:LED低电平 亮
在这里插入图片描述
在这里插入图片描述
代码少,我直接放在main.c编程
main.c

#include "main.h"

void delay_ms(u16 nms)
{			 
    volatile u16 i;
    do
    {
        for(i=0;i<1500;i++); 
    }while(nms--);
}
void delay_us(u32 nus)
{
    volatile u16 i;
	
    do
    {
        for(i=0;i<20;i++);
    }while(nus--);
}

int main(void)
{
   //PB3和PB4引脚有JTAG功能,需要设置为普通的IO口使用
    RCC->APB2ENR |= RCC_APB2Periph_AFIO;     //开启辅助时钟
	  AFIO->MAPR |= (0x02<<24); // 清除MAPR的[26:24]
	  
    mainLedInit();
    
    while (1)
    {
        GPIO_ResetBits(GPIOB, GPIO_Pin_3);
        GPIO_ResetBits(GPIOB, GPIO_Pin_4);
        delay_ms(1000);
        GPIO_ResetBits(GPIOB, GPIO_Pin_3);
        GPIO_SetBits(GPIOB, GPIO_Pin_4);
        delay_ms(1000);

//也可以用寄存器点亮LED
/*while (1)                                                                 //  寄存器方式点亮LED灯
  {     
        i ++
        if(i < 30000)
        {
            GPIOB->BRR = (1 << 3 );                                         //  设置PB3为低电平
            GPIOB->BSRR = (1 << 4);                                         //  设置PB4为高电平
        }else if(i < 600000)
        {
            GPIOB->BRR = (1 << 3);
            GPIOB->BSRR = (1 << 4);
        }else
        {
            i = 0;
        }
        }
       
}        
*/	
    } 
}

//初始化LED接口      
void mainLedInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;                                    //  定义结构体类型
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);                   //  GPIOB时钟使能
  
    //  2.定义GPIO配置结构体的变量
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;                  //  前面空四格
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure); 
 // GPIO_ResetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_4);
    //  3.调用函数初始化GPIO
    GPIO_Init(GPIOB,&GPIO_InitStructure);                                   //  这里要传入地址
 
}

main.h

#ifndef __MAIN_H
#define __MAIN_H

void mainLedInit(void);

#endif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmiyhl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值