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

2019-08-22来源: eefocus关键字: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 TIM3_IRQHandler(void)

{

if(TIM3->SR&0x0001)

{

LED0=!LED0;

}

TIM3->SR&=~(1<<0);//处理完中断之后应该向 TIM3_SR 的最低位写 0,来清除该中断标志

}

//定时器3中断初始化

void TIM3_Init(u16 arr,u16 psc)

{

RCC->APB1ENR|=1<<1;//开启TIM3定时器时钟

TIM3->ARR=arr;//设置重装载值

TIM3->PSC=psc;//设置预分频值

TIM3->DIER|=1<<0;//开启中断允许

TIM3->CR1|=0x01;//开启定时器3

MY_NVIC_Init(1,3,TIM3_IRQn,2);

}

第三步:编写main函数


#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "beep.h"

#include "key.h"

#include "tim.h"

u8 Wl_stat=0;//while标志位

int main(void)

{

// int key_stat;

Stm32_Clock_Init(9);   //系统时钟设置

delay_init(72);     //延时初始化

uart_init(72,115200); //串口初始化为115200

LED_Init();

BEEP_Init();

TIM3_Init(4999,7199);

while(1)

{

if(Wl_stat==0)//代表进入WHILE循环

{

printf("Input While(1)-->rn");

Wl_stat=1;

}

LED1=!LED1;

delay_ms(200);

}

第四步:编译通过后,烧录进STM32F103ZET6开发板,实现程序设计效果即可。


效果:【在完成软件设计之后,我们将编译好的文件下载到精英 STM32 V1 开发板上,观看其运行结果是否与我们编写的一致。如果没有错误,我们将看 DS0 不停闪烁(每 400ms 闪烁一次),而 DS1 也是不停的闪烁,但是闪烁时间较 DS0 慢( 1s 一次)】


关键字:STM32F103ZET6  主控平台  定时器  TIM3

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

上一篇:stm32使用tim3输出4路pwm(khz级)
下一篇:基于STM32的ch438串口扩展芯片使用

关注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使用通道1输出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"
发表于 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的引脚分类和几个需要特殊注意的引脚总结

STM8L 简单定时器使用

STM8L中有多个定时器,TIM1最高级,其他都是普通定时器,一般情况下也够用。最简单的示例初始化    // TIM3时钟使能    CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);             // 默认初始化    TIM3_DeInit();    // 最主要处理:设置计数(延时时间)    // STM8上电后的默认时钟是HSI的8分频,也就是16M/8=2M 
发表于 2019-09-17

小广播

何立民专栏

单片机及嵌入式宝典

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

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