
本文共 1471 字,大约阅读时间需要 4 分钟。
实验原理及实现过程
通过调节占空比,改变输出电压大小,从而实现对小灯亮度的控制。在本实验中,使用正点原子精英版开发板,并通过复用重映射将PA7(时钟3的通道2:TIM3_CH2)映射到PB5(LED0)上。接下来将详细介绍实验的配置步骤和实现方法。
实验配置步骤
第一步,开启TIM3时钟,配置PB5为复用输出
第二步,设置TIM3_CH2重映射到PB5上
第三步,设置TIM3的ARR和PSC
第四步,设置TIM3_CH2的PWM模式
第五步,设置 TIM3_CCR2 用于控制占空比 通过修改TIM3_CCR2的值,可以调节CH2输出的占空比,从而控制灯的亮度。
配置代码
头文件 #ifndef _PWM_DSO #define _PWM_DSO //通过改变占空比来改变亮度 #define Pwm_value TIM3->CCR2 #endif
初始化函数 #include "pwm_dso.h" #include "sys.h" void Pwm_Dso_Init(void) { //设置相关寄存器值 RCC->APB1ENR |= (1 << 1); //开启TIM3时钟 RCC->APB2ENR = (1 << 3); //开启B端口时钟 GPIOB->CRL = 0xFFFFF00F; //设置PB5为复用推挽输出 AFIO->MAPR |= (1 << 10) | (1 << 11); //进行复用重映射配置 //配置其他相关寄存器参数 }
主函数 #include "pwm_dso.h" #include "sys.h"
int main(void) { u8 flag = 1; u16 value = 0; Stm32_Clock_Init(9); //系统时钟初始化 UART_Init(72, 115200); //串口初始化 Led_Init(); //LED初始化 Pwm_Dso_Init(); //启动PWM控制 while(1) { if(flag) value++; else value--; if(value > 100) flag = 0; if(value == 0) flag = 1; Pwm_value = value; } }
注:以上代码仅为示例,需根据实际开发需求进行调整。
各寄存器解释 PWM:即脉宽调制 TIMx_ARR:自动重装载寄存器 TIMx_CR1:控制寄存器1 TIMx_CCER:捕获/比较使能寄存器 TIMx_CCMR1:捕获/比较模式寄存器
发表评论
最新留言
关于作者
