STM32学习之:定时器 软件计时
来源:互联网 发布:教我开淘宝店 编辑:程序博客网 时间:2024/06/05 03:58
stm32定时器实现60秒定时秒表
#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#include "usart.h"#include "timer.h"#include "beep.h" extern u32 sec; int main(void) { delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); LCD_Init(); BEEP_Init(); TIM3_Int_Init(9999,7199);//10Khz的计数频率, 延时1s == 1000 000us while(1){ LCD_ShowString(30,70,200,16,16,"Zhaocundang:14160310317"); LCD_ShowString(30,162,200,2,16,"Second Clock:"); LCD_ShowNum(150,162,sec,2,16);
} }
#include "timer.h"#include "led.h"#include "sys.h"#include "usart.h"#include "lcd.h"#include "beep.h"#include "delay.h"////////////////////////////////////////////////////////////////////////////////// //本程序只供学习使用,未经作者许可,不得用于其它任何用途//ALIENTEK战舰STM32开发板//定时器 驱动代码 //正点原子@ALIENTEK//技术论坛:www.openedv.com//修改日期:2012/9/3//版本:V1.0//版权所有,盗版必究。//Copyright(C) 广州市星翼电子科技有限公司 2009-2019//All rights reserved ////////////////////////////////////////////////////////////////////////////////// volatile u32 sec=0; //通用定时器3中断初始化//这里时钟选择为APB1的2倍,而APB1为36M//arr:自动重装值。//psc:时钟预分频数//这里使用的是定时器3!// TIM3完成定时60svoid TIM3_Int_Init(u16 arr,u16 psc){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能 //定时器TIM3初始化 TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断 //中断优先级NVIC设置 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能 NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器 TIM_Cmd(TIM3, ENABLE); //使能TIMx }//定时器3中断服务程序void TIM3_IRQHandler() //TIM3中断{ if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志 LED1=!LED1; } sec++; if(sec==60) {//赵存档 QQ463431476 http://www.cnblogs.com/xiaobo-Linux/ LED0=0; delay_ms(100); LED0=1; delay_ms(100); LED0=0; delay_ms(100); LED0=1; delay_ms(100); BEEP=1; delay_ms(200); BEEP=0; sec=0; } }
阅读全文
0 0
- STM32学习之:定时器 软件计时
- STM32学习之:定时器简介
- STM32学习之:定时器中断
- STM32学习笔记之:stm32通用定时器
- STM32定时器溢出模式计时设置
- STM32定时器溢出模式计时设置 .
- 嵌入式系统学习——STM32之UCOS-III中断和时间管理及软件定时器
- STM32学习笔记之定时器的配置
- STM32学习之:定时器时间计算
- STM32学习之:定时器时间计算
- STM32学习之:定时器程序设计探讨
- stm32-学习经验总结 ———UCOSIII-软件定时器
- STM32定时器学习---基本定时器
- STM32的定时器学习
- STM32 定时器学习
- stm32的定时器学习
- stm32之滴答定时器
- STM32之通用定时器
- js 数组 去重 代码
- phpcms 允许英文目录有空格并修改限制长度
- Java SE(六)—— 多线程
- 数据结构实验之栈与队列三:后缀式求值
- 7-7 六度空间(30 分)
- STM32学习之:定时器 软件计时
- Apache CommonsのBeanUtilsのcopyPropertiesの使い方
- 链队列
- Android的代码安全那些事
- 本地安装jekll环境
- hdoj 2028 Lowest Common Multiple Plus
- Spring Framework Overview
- Oracle触发器实现更新一张表数据时判断另一张表是否存在,存在更新数据,不存在插入数据
- Leetcode2. Add Two Numbers