STM32通过串口控制LED闪烁或者呼吸效果
目录
1、准备工作
1.首先我们需要准备32的最小系统板或者开发板。
2.准备一个LED灯(如果使用板子上的灯来实现则不需要,下面我是使用最小系统板上的LED灯来实现)。
3.若干杜邦线。
4.软件方面的准备,我是直接使用开源PWM源码进行修改。
2、思路分析
一、使用串口调试助手向单片机发送数据(这个数据可以是一个字符,也可以是字符串,根据个人需求),我们发送的数据被单片机接收到后,会被保存在数据缓冲区USART_RX_BUF这个函数中。
二、我们的数据是存在USART_RX_BUF函数中,只要我们对USART_RX_BUF函数中的数据进行判断就可以让它实现不同的功能,这个判断可以按位操作,也可以使用数组的方式进行判断。
三、主函数中写入我们需要实现的功能函数,主要使用IF判断语句,来进行判断。
下面来看看实际操作。
3、实际操作
1)如果你也是使用开源的PWM模板的话,第一步就可以省略了,第一步主要做一些使能串口和定义串口,定时器等的工作,我这里我使用的是定时器3的通道2——PB5(部分重映射,因为最小系统板的LED灯是对应PC13口的,到时候看效果还要使用一根杜邦线把PB5和PC13连在一起。如果自己准备了LED的小伙伴也可以直接接自己的LED但是最好要接一个保护电阻,还有要与单片机共地哦)这些都是开源模板里面已经帮我们定义好的,我们直接使用就行。如果是想自己写的小伙伴开源参考下面的代码
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5
//设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
//初始化TIM3
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =