STM32学习笔记(七)-库函数实现led流水灯

重点提醒:一定要学会看你所用开发板的原理图

比如我用的是野火霸道V2的开发板,原理图中led部分如下

可见该led是一个RGB灯,控制引脚为PB0,PB1,PB5,且为低电平点亮

rcc.h和gpio.h里面的函数我已经详细解释过了,想知道的可以去看我之前的学习笔记

Delay文件也在之前的学习笔记中有全部代码

1.新建工程

1.复制STM32学习笔记(2)- 库函数点亮LED灯的工程文件

2.添加Delay文件到工程中

3.实现流水灯的效果,我用了GPIO_Write()这个函数,从它的定义,我们可以看出,它需要传入端口输出数据寄存器的值

/**
  * @brief  Writes data to the specified GPIO data port.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  PortVal: specifies the value to be written to the port output data register.
  * @retval None
  */
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  GPIOx->ODR = PortVal;
}

4.16位二进制分别对应PB0到PB15共16个端口

5.转到引脚的定义可以看到引脚对应的寄存器值

6.main.c全部代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0 | GPIO_Pin_5;	//选择你的led灯的gpio引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	while(1)
	{
		GPIO_Write(GPIOB, ~0x0001);	//使用寄存器参数,c语言不支持二进制,所以使用十六进制,又因为led是低电平点亮,所以按位取反
		Delay_ms(100);
		GPIO_Write(GPIOB, ~0x0002);	//PB1
		Delay_ms(100);
		GPIO_Write(GPIOB, ~0x0020); //PB5
		Delay_ms(100);
	}
}

2.效果图

效果图我用了STM32F103C8T6, PA0(TIM2_CH1)输出

led流水灯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值