STM32f103ZET6定时器TIM3使用通道1输出PWM程序

2019-08-22来源: eefocus关键字:STM32f103ZET6  定时器  TIM3  输出PWM

总结:


TIM3_CH1输出口为PA6(重映射为PB4),PB5位DS0接口。


1.使用重映射之后,原始IO口不再有输出;本例子中,若使用部分重映射,则 PA6映射到PB4中,所以仅仅PB4有波形输出;飞线连接PB4与PB5即可观察PWM呼吸灯效果。


2.使用IO口前务必初始化,本例子中开始仅仅初始化了PB5口,而没有初始化PA6导致一直验证失败;正点原子给出程序中是由通道2直接映射到PB5因此只需要初始化PB5口即可,不存在上述问题。


3.除了正常输出输入信号之外,输出PWM以及其他功能均属于IO口的复用功能。


#include "stm32f10x.h"

#include "led.h"

#include "timer.h"

 

void TIM3_PWM_Init(u16 arr,u16 psc)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

    TIM_OCInitTypeDef TIM_OCInitStructure;

    

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    

    

    //PB5初始化

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOB,&GPIO_InitStructure);

    

     //初始化PA6

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStructure);

    

 

    //初始化定时器TIM3

    

    TIM_TimeBaseInitStructure.TIM_ClockDivision=0;

    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;

    TIM_TimeBaseInitStructure.TIM_Period=arr;

    TIM_TimeBaseInitStructure.TIM_Prescaler=psc;

    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure); 

    

    //初始化通道一TIM3_CH1

    

    

    TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;

    TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;

    TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;

    TIM_OC1Init(TIM3,&TIM_OCInitStructure);

    

    TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);

        

    TIM_Cmd(TIM3,ENABLE);

}

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "usart.h"

#include "timer.h"

 

 

 

 int main(void)

 {

  u16 led0pwmval=0;

u8 dir=1;

delay_init();    

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  

uart_init(115200);

  LED_Init();     

  TIM3_PWM_Init(899,0);

    while(1)

{

  delay_ms(10);  

if(dir)led0pwmval++;

else led0pwmval--;

 

  if(led0pwmval>300)dir=0;

if(led0pwmval==0)dir=1;  

TIM_SetCompare1(TIM3,led0pwmval);   

TIM_SetCompare2(TIM3,led0pwmval);

}  

 }



关键字:STM32f103ZET6  定时器  TIM3  输出PWM

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic472119.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32f0设置tim2单脉冲模式-tim1内部触发
下一篇:stm32使用tim3输出4路pwm(khz级)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F103ZET6 — PWM(TIM1)

:STM32 的定时器功能十分强大,不仅仅实现了定时器的基本功能,对于高级定时器 TIM1/TIM8,更是能够输出 PWM,波形,同时还带插入死区的互补输出。天生就是拿来做电机控制的一把好手。TIM1 对应的 PinTIM1 能够输出 4 路 PWM 信号,所有逻辑全部做在了硬件里面,也就是说, TIM1/TIM8 的硬件逻辑中,绑定了几个引脚,不单纯的只是 Timer:如图所示,TIM1 的四个 Channel 1 ~ Channel 4 分别对应着 PA8 ~ PA11,互补输出的信号 Channel 1 N ~ Channel 3 N 分别对应到了 PB13 ~ PB15 管脚。对应到单板上:   
发表于 2019-08-24
STM32F103ZET6 — PWM(TIM1)

移植freeRTOS V10.2.0到stm32f103zet6

应用FPU 1、工程文件startup_stm32f40_41xxx.s 新建一个 test.c 文件,并保存在 USER 文件夹下2、工程文件夹USER 文件夹专门用来存放启动文件(startup_stm32f40_41xxx.s)、工程文件(test.uvprojx)等不可缺少的文件,OBJ 则用来存放这些编译过程中产生的中间文件(包括.hex 文件也将存放在这个文件夹里面) SYSTEM文件夹,该文件夹由 ALIENTEK 提供,可以在光盘任何一个实例的工程目录下找到3、工程分组 Target 目录树上点击右键  Manage Project Items我没改文件夹
发表于 2019-08-23
移植freeRTOS V10.2.0到stm32f103zet6

基于STM32F103ZET6主控平台实现定时器TIM3的驱动

定时器描述:定时器的运用主要是对重装载值和预分频的配置,这两个寄存器配置决定定时器定时的时长,接下来是开启定时器中断,当设置的时长溢出便会进入中断,在相应的中断服务函数中编写要执行的程序即可实现隔一段时间执行一次程序的效果,例如LED的亮灭。第一步:编写tim.h头文件#ifndef __TIM_H#define __TIM_H#include "sys.h"void TIM3_Init(u16 arr,u16 psc);//定时器3初始化#endif第二步:编写tim.c文件#include "tim.h"#include "led.h" void
发表于 2019-08-22

STM32F103ZET定时器TIM1输出六路带死区互补PWM波形

; TIM_TimeBaseStructure.TIM_Prescaler = 99;//??????1us     TIM_TimeBaseStructure.TIM_ClockDivision     = TIM_CKD_DIV1;     TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000;     TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);      
发表于 2019-08-21

STM32F103ZET6的引脚分类和几个需要特殊注意的引脚总结

前言本博文基于STM32F103ZET6编写;如有不足之处,多多指教;多功能引脚图下图为STM32芯片引脚细节图由图片可知,STM32大部分GPIO都有复用功能,所以在配置的时候要格外小心;下图为**《STM32大容量手册》引脚功能分类图**引脚分类(按照我自己理解给分的类)第一类:非GPIO单功能引脚电源引脚Vdd;接地引脚Vss;芯片掉电保持引脚VBAT;外部晶振引脚OSC_IN和OSC_OUT;空引脚NC;复位引脚NRST;参考电压引脚VREF+和VREF-;BOOT0引脚;特点: 这列引脚往往在Pin name这栏中都是以本身的功能名命名;第二类:GPIO单功能引脚例如最后一个表格中的PG15,只有普通输入输出的功能
发表于 2019-08-01
STM32F103ZET6的引脚分类和几个需要特殊注意的引脚总结

第18章 SysTick—系统定时器—零死角玩转STM32-F429系列

本章参考资料《 ARM Cortex™-M4F 技术参考手册》-4.5 章节SysTick Timer(STK),和4.48章节SHPRx,其中STK这个章节有SysTick的简介和寄存器的详细描述。因为SysTick是属于CM4内核的外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现。所以学习SysTick的时候可以参考这两个资料,一个是文档,一个是源码。18.1 SysTick简介SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于180M。当重装载数值寄存器
发表于 2019-09-18
第18章 SysTick—系统定时器—零死角玩转STM32-F429系列

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved