标题:
Stm32驱动sg90舵机程序 sg90接信号线PA6
[打印本页]
作者:
没有名字、
时间:
2020-4-1 17:03
标题:
Stm32驱动sg90舵机程序 sg90接信号线PA6
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "timer.h"
int main(void)
{
delay_init();
TIM3_PWM_Init(199,7199);
TIM_SetCompare1(TIM3,195); //对应0度
delay_ms(100);
// TIM3_Int_Init(4999,7199); //500ms
while(1)
{
TIM_SetCompare1(TIM3,175); //对应180度
delay_ms(500);
TIM_SetCompare1(TIM3,180); //对应135度
delay_ms(500);
TIM_SetCompare1(TIM3,185); //对应90度
delay_ms(500);
TIM_SetCompare1(TIM3,190); //对应45度
delay_ms(500);
TIM_SetCompare1(TIM3,195); //对应0度
}
}
复制代码
#include "timer.h"
#include "led.h"
void TIM3_Int_Init(u16 arr,u16 psd)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitStrue.TIM_Period=arr;
TIM_TimeBaseInitStrue.TIM_Prescaler=psd;
TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
//中断优先级NVIC设置
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
TIM_Cmd(TIM3,ENABLE);
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{
LED1=!LED1;
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
}
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitTypeStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
TIM_OCInitTypeDef TIM_OCInitTypeStrue;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
// GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
GPIO_InitTypeStructure.GPIO_Mode=GPIO_Mode_AF_PP; //推挽输出
GPIO_InitTypeStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitTypeStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitTypeStructure);
TIM_TimeBaseInitStrue.TIM_Period=arr;
TIM_TimeBaseInitStrue.TIM_Prescaler=psc;
TIM_TimeBaseInitStrue.TIM_ClockDivision= 0;
TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
TIM_OCInitTypeStrue.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitTypeStrue.TIM_OCNPolarity=TIM_OCPolarity_High;
TIM_OCInitTypeStrue.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitTypeStrue.TIM_Pulse= 0;
TIM_OC1Init(TIM3,&TIM_OCInitTypeStrue);
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3,ENABLE);
}
// void SG90_Init(float angle)
// {
// angle=(u16)(50.0*angle/9.0+249.0);
// TIM_SetCompare1(TIM3,angle);
// }
复制代码
全部资料51hei下载地址:
Template.7z
(180.36 KB, 下载次数: 95)
2020-4-1 18:07 上传
点击文件名下载附件
sg90驱动
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1