定时器中断实验
来源:互联网 发布:罗盘视频软件 编辑:程序博客网 时间:2024/06/05 10:44
实验内容
通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反(闪烁)。
Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
实验步骤
1、能定时器时钟。
RCC_APB1PeriphClockCmd();
2、初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
3、开启定时器中断,配置NVIC。
void TIM_ITConfig();
NVIC_Init();
4、使能定时器。
TIM_Cmd();
5、编写中断服务函数。
TIMx_IRQHandler();
实验代码
main.c
#include "led.h"#include "delay.h"#include "usart.h"#include "time.h"int main(){ delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(115200); LED_Init(); TIM3_Int_Init(4999, 7199); // 10Khz的计数频率,计数到5000为500ms while(1) { LED0 = !LED0; printf("OK\r\n"); delay_ms(250); }}
time.h
#ifndef __TIME_H#define __TIME_H#include "sys.h"void TIM3_Int_Init(u16 arr, u16 psc);#endif
time.c
#include "time.h"#include "led.h"void TIM3_Int_Init(u16 arr, u16 psc){ NVIC_InitTypeDef NVIC_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; // TIM3时钟使能; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); // 初始化定时器; TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 设置时钟分割; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // TIM向上计数; TIM_TimeBaseInitStruct.TIM_Period = arr; // 设置自动重装载周期值; TIM_TimeBaseInitStruct.TIM_Prescaler = psc; // 设置分频系数; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct); // 打开更新中断; TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // 中断优先级NVIC设置; NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3; NVIC_Init(&NVIC_InitStruct); // 使能TIM3; TIM_Cmd(TIM3, ENABLE);}void TIM3_IRQHandler(void){ if (TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET) { LED1 = !LED1; TIM_ClearITPendingBit(TIM3, TIM_IT_Update); }}
0 0
- 中断和定时器实验
- mini2440 定时器中断实验
- 4、定时器中断实验
- 定时器中断实验
- 定时器中断实验
- 定时器中断实验
- stm32定时器中断实验
- 定时器中断实验
- 定时器中断实验
- 【实验六】定时器中断实验
- STM32学习-定时器中断实验
- STM32定时器中断实验-TIM3
- 外部中断与定时器中断实验
- 实验二:外部中断与定时器/计数器中断实验
- STM32单片机学习(5) 定时器中断实验
- 中断和定时器实验--c语言实现中断嵌套
- 外部中断与定时器中断实验(修改)
- cortex_m3_stm32嵌入式学习笔记(八):定时器中断实验(定时器的更新中断)
- 有一种记录叫“时光轴”!
- jQ实现表单实时提醒
- 欢迎使用CSDN-markdown编辑器
- switch语句选择显示边缘
- 爬树法·LCA
- 定时器中断实验
- 10.5
- 21个常用的PHP函数代码段
- 10.6
- Repair the Wall
- map
- 第一个web项目hello world的实现
- HDU 5883 欧拉回路
- 自定义View(二)