找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3465|回复: 0
收起左侧

Stm32驱动sg90舵机程序 sg90接信号线PA6

[复制链接]
ID:436794 发表于 2020-4-1 17:03 | 显示全部楼层 |阅读模式
  1. #include "stm32f10x.h"
  2. #include "led.h"
  3. #include "delay.h"
  4. #include "timer.h"

  5. int main(void)
  6. {
  7.         delay_init();
  8.         TIM3_PWM_Init(199,7199);       
  9.   TIM_SetCompare1(TIM3,195); //对应0度       
  10.         delay_ms(100);
  11. //        TIM3_Int_Init(4999,7199);  //500ms
  12.        
  13. while(1)
  14.         {
  15.                 TIM_SetCompare1(TIM3,175); //对应180度
  16.         delay_ms(500);
  17.                 TIM_SetCompare1(TIM3,180); //对应135度
  18.         delay_ms(500);
  19.                 TIM_SetCompare1(TIM3,185); //对应90度
  20.         delay_ms(500);
  21.                 TIM_SetCompare1(TIM3,190); //对应45度
  22.         delay_ms(500);
  23.                 TIM_SetCompare1(TIM3,195); //对应0度
  24.   }

  25. }
复制代码
  1. #include "timer.h"
  2. #include "led.h"

  3. void TIM3_Int_Init(u16 arr,u16 psd)
  4. {
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
  6.                 NVIC_InitTypeDef NVIC_InitStructure;
  7.        
  8.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  9.        
  10.         TIM_TimeBaseInitStrue.TIM_Period=arr;
  11.         TIM_TimeBaseInitStrue.TIM_Prescaler=psd;
  12.         TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
  13.         TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1;
  14.        
  15.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);

  16.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  17.        
  18.         //中断优先级NVIC设置
  19.         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
  20.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
  21.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  23.         NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器
  24.        
  25.         TIM_Cmd(TIM3,ENABLE);


  26. }


  27. void TIM3_IRQHandler(void)
  28. {
  29.         if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
  30. {
  31.         LED1=!LED1;
  32.         TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
  33. }

  34. }




  35. void TIM3_PWM_Init(u16 arr,u16 psc)
  36. {
  37.         GPIO_InitTypeDef  GPIO_InitTypeStructure;
  38.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
  39.         TIM_OCInitTypeDef TIM_OCInitTypeStrue;
  40.        
  41.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);       
  42.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
  43.        
  44. //        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
  45.        
  46.        
  47.   GPIO_InitTypeStructure.GPIO_Mode=GPIO_Mode_AF_PP; //推挽输出
  48.         GPIO_InitTypeStructure.GPIO_Pin=GPIO_Pin_6;
  49.         GPIO_InitTypeStructure.GPIO_Speed=GPIO_Speed_50MHz;
  50.         GPIO_Init(GPIOA, &GPIO_InitTypeStructure);
  51.        
  52.         TIM_TimeBaseInitStrue.TIM_Period=arr;
  53.         TIM_TimeBaseInitStrue.TIM_Prescaler=psc;
  54.         TIM_TimeBaseInitStrue.TIM_ClockDivision= 0;
  55.         TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
  56.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
  57.        
  58.        
  59.        
  60.         TIM_OCInitTypeStrue.TIM_OCMode=TIM_OCMode_PWM2;
  61.         TIM_OCInitTypeStrue.TIM_OCNPolarity=TIM_OCPolarity_High;
  62.         TIM_OCInitTypeStrue.TIM_OutputState=TIM_OutputState_Enable;
  63.         TIM_OCInitTypeStrue.TIM_Pulse= 0;
  64.         TIM_OC1Init(TIM3,&TIM_OCInitTypeStrue);
  65.         TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
  66.        
  67.        
  68.         TIM_ARRPreloadConfig(TIM3, ENABLE);
  69.        
  70.         TIM_Cmd(TIM3,ENABLE);

  71. }

  72. // void SG90_Init(float angle)
  73. // {   
  74. //  angle=(u16)(50.0*angle/9.0+249.0);
  75. //     TIM_SetCompare1(TIM3,angle);
  76. // }

复制代码

全部资料51hei下载地址:
Template.7z (180.36 KB, 下载次数: 95)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表