#############主程序########################
include <timer.c>
int main(void)
{
u16 i;
Stm32_Clock_Init(9);//系统时钟设置
uart_init(72,115200);//串口初始化115200
delay_init(72); //延时初始化
LED_Init(); //初始化与LED链接的硬件接口
TIM3_PWM_Init(1999,719);
while(1)
{
for(i=1750;i<1951;i++){ //舵机从0度开始,0度为1750。
LED0_PWM_VAL=i; //循环得到的i变量赋值到舵机上
delay_ms(10);
}
for(i=1951;i>1749;i--){ //舵机从180度开始,180度为1950。
LED0_PWM_VAL=i; //循环得到的i变量赋值到舵机上
delay_ms(10);
}
}
}
##################################头文件timer.c############################
void TIM3_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRL&=0XFF0FFFFF; //PB5输出
GPIOB->CRL|=0X00B00000; //复用功能输出
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR&=0XFFFFF3FF; //清除MAPR的【11:10】
AFIO->MAPR|=1<<11; //部分重映像,TIM3_CH2->PB5
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频赋值
TIM3->CCMR1|=7<<12; //CH2 PWM2模式
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CR1=0x0080; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}
代码下载:
舵机 寄存器.7z
(83.17 KB, 下载次数: 14)
|