1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Stm32(寄存器)通道一--输出占空比50%的PWM

Stm32(寄存器)通道一--输出占空比50%的PWM

时间:2023-03-10 16:22:30

相关推荐

Stm32(寄存器)通道一--输出占空比50%的PWM

1;目的:用STM32f10x的TIM3产生占空比50%,频率10Khz的方波;

2;操作步骤;

(1)开启TIM3时钟;

(2)设置自动重装载值和预分频系数;

(3)设置通道和PWM模式;

(4)使能TIM3;

(5)修改CCR1来控制占空比;

3;代码部分;

pwm.c

在这里插入代码片#include "pwm.h"void TIM3_PWM_Init(u16 arr,u16 psc){RCC->APB1ENR |=1<<1;//TIM3时钟使能//端口复用RCC->APB2ENR |=1<<2;//开启A时钟GPIOA->CRL&=0XF0FFFFFF; //PA6清除之前的设置GPIOA->CRL|=0X0B000000; //复用功能输出 TIM3->ARR=arr;//自动重装载值TIM3->PSC=psc;//预分频系数TIM3->CCMR1|=7<<4; //CH1 PWM2 模式//比较捕获模式配置寄存器TIM3->CCER|=1<<0; //OC1 输出使能 //捕获/比较使能寄存器TIM3->CR1 |=0X0001;//使能定时器3}

pwm.h

在这里插入代码片#ifndef _PWM_H_#define _PWM_H_#include "sys.h"#include "led.h"#define CH1_PWM TIM3->CCR1//占空比void TIM3_PWM_Init(u16 arr,u16 psc);#endif

main.c

在这里插入代码片#include "stm32f10x.h"#include "sys.h"#include "delay.h"#include "led.h"#include "timer.h"#include "pwm.h"int main(){Stm32_Clock_Init (9);LED_Init();delay_init(72);TIM3_PWM_Init(7199,0);//PWM频率=72000000(7199+1)=10Khzwhile(1){LED1=0;delay_ms(10);CH1_PWM=3600;//调占空比为3600/7200=50%;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。