PWM输出,呼吸灯

来源:互联网 发布:淘宝做代理可靠吗 编辑:程序博客网 时间:2024/04/29 01:37

一、初始化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. }

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(9) | 评论(0) | 转发(0) |
0

上一篇:SysTick功能总结

下一篇:mpu6050学习

相关热门文章
  • SHTML是什么_SSI有什么用...
  • 查看linux中某个端口(port)...
  • 卡尔曼滤波的原理说明...
  • shell中字符串操作
  • 关于java中的“错误:找不到或...
给主人留下些什么吧!~~
原创粉丝点击