6、DSP28335定时器中断

/*
 * 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;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值