1.实验器材:
STM32F103c8
2.实验目的:
学习定时器的PWM功能3.硬件资源:
- DS0(连接在PB5)
- 定时器3(TIM3),使用TIM3的通道2(CH2),开启部分重映射,将TIM3_CH2输出到PB5. 从而实现PWM输出控制DS0亮度.
4.实验现象:
本实验,DS0由暗到亮,再由亮到暗,再由暗到亮,依次循环.
一、LED初始化
代码分析:
1.声明GPIO _Initure:
GPIO_InitTypeDef GPIO_Initure
2.初始化GPIOB、GPIOE的时钟:
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
3.对GPIOB和GPIOE进行配置
GPIO_Initure.Pin=GPIO_PIN_5; //PB5
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
4.调用GPIO初始化函数,进行初始化:
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
5.GPIOE也类似进行初始化,GPIOE和GPIOB的配置是一样的。
GPIO_Initure.Pin=GPIO_PIN_5; //PE5
HAL_GPIO_Init(GPIOE,&GPIO_Initure);
6.设置GPIOB和GPIOE的默认状态
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); //PB5置1,默认初始化后灯灭
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET); //PE5置1,默认初始化
LED_Init整体代码:
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIO