/*
* mytimer.c
*
* Created on: 2024年3月20日
* Author: WnYears
*/
#include "mytimer.h"
//定时器 0 初始化函数
//Freq: CPU 时钟频率(150MHz)
//Period: 定时周期值, 单位 us
void TIM0_Init(float Freq, float Period)
{
//设置定时器 0 的中断入口地址为中断向量表的 INT0
EALLOW;
PieVectTable.TINT0 = &TIM0_IRQn;
EDIS;
//指向定时器 0 的寄存器地址
CpuTimer0.RegsAddr = &CpuTimer0Regs;
//当预定标计数器PSCH:PSC减到0时,计数器TIMH:TIM会减一
//当预定标计数器PSCH:PSC减到0时,重新转载定时器分频TDDRH:TDDR的值
//当计数器TIMH:TIM减到0时,重新装载周期寄存器PRDH:PRD的值
//设置定时器 0 的周期寄存器值 最大
CpuTimer0Regs.PRD.all = 0xFFFFFFFF;
//设置定时器预定标计数器值为 0
CpuTimer0Regs.TPR.all = 0;
CpuTimer0Regs.TPRH.all = 0;
//定时器控制位:1:停止状态 0:运行状态
CpuTimer0Regs.TCR.bit.TSS = 1;
//1:重载使能 0:重载失能
CpuTimer0Regs.TCR.bit.TRB = 1;
//定时器中断计数值
CpuTimer0.InterruptCount = 0;
//定时器设置:调用TI封装好的函数 参数1:指定定时器 参数2:设置频率 参数3:定时周期(单位为us)
ConfigCpuTimer(&CpuTimer0, Freq, Period);
//设置定时器0的中断入口地址为中断向量表的INT0
EALLOW;
PieVectTable.TINT0 = &TIM0_IRQn;
EDIS;
//开始定时器功能
CpuTimer0Regs.TCR.bit.TSS=0;
//开启 CPU 第一组中断并使能第一组中断的第 7 个小中断, 即定时器 0
IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
//使能总中断
EINT;
ERTM;
}
interrupt void TIM0_IRQn(void)
{
EALLOW;
GpioDataRegs.GPATOGGLE.bit.GPIO11=1; //LED电平翻转
PieCtrlRegs.PIEACK.bit.ACK1=1;
EDIS;
}
6、DSP28335定时器中断
最新推荐文章于 2024-07-12 14:17:28 发布