Chinaunix首页 | 论坛 | 博客
  • 博客访问: 498747
  • 博文数量: 223
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2145
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-01 10:23
个人简介

该坚持的时候坚持,该妥协的时候妥协,该放弃的时候放弃

文章分类

全部博文(223)

文章存档

2017年(56)

2016年(118)

2015年(3)

2014年(46)

我的朋友

分类: 嵌入式

2017-05-20 16:49:33

一、初始化GPIO

使用PB1,查芯片手册对应TIM3_CH4
  1.     GPIO_InitTypeDef GPIO_InitStructure;
  2.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  3.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

  4.     
  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  7.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  8.     
  9.     GPIO_Init(GPIOB, &GPIO_InitStructure);

二、初始化TIM和PWM


  1.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  2.     TIM_OCInitTypeDef TIM_OCInitStructure;

  3.     /* 周期1000 */
  4.     TIM_TimeBaseStructure.TIM_Period = 999;
  5.     /* 定时器时间间隔1微秒 */
  6.     TIM_TimeBaseStructure.TIM_Prescaler = 0;
  7.     TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  8.     /* 向上计数 */
  9.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  10.     /* 配置 */
  11.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  12.     
  13.     /* 选择PWM1模式 */
  14.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  15.     /* 允许输出模式 */
  16.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    
  17.     /* 匹配值 */
  18.     TIM_OCInitStructure.TIM_Pulse = 1000;    
  19.     /* 设置小于匹配值时为高电平 */
  20.     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  21.     /* 使能通道1 */
  22.     TIM_OC4Init(TIM3, &TIM_OCInitStructure);    
  23.     
  24.     TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
  25.     TIM_ARRPreloadConfig(TIM3, ENABLE);
  26.     TIM_Cmd(TIM3, ENABLE);

三、main函数部分

通过修改CCRx寄存器,改变占空比。从而调整电流大小
  1. while(1)
  2. {
  3.         if(CCR3_Val >=0 && CCR3_Val <= 1000)
  4.         {
  5.             CCR3_Val -= 50;
  6.             Delay(1);
  7.         }
  8.         else
  9.         {
  10.             CCR3_Val = 1000;
  11.             Delay(1);
  12.         }
  13.         TIM3->CCR4 = CCR3_Val;
  14.         Delay(1);
  15. }

阅读(712) | 评论(0) | 转发(0) |
0

上一篇:SysTick功能总结

下一篇:mpu6050学习

给主人留下些什么吧!~~