TI F28P55/65X开发板学习笔记(二)

CPU Timer2的使用

一.复制上次的工程模板(注意修改.project文件中的name

不修改的话CCS导入时重名可能无法导入

二.配置 Sysconfig

配置完以后再次检查board.h文件 看是否设置成功;

如上图所示的话就表示成功。

三.在App下inc文件中创建sys.h 在src下创建sys.c

将以下代码复制到sys.c中

/*
 * sys.c
 *
 *  Created on: 2025年4月1日
 *      Author: 老亚索
 */
#include "sys.h"

void configCPUTimer(uint32_t cpuTimer, float freq, float period)//选cpu-timer号,系统时钟,周期
{
    uint32_t temp;

    //
    // Initialize timer period:
    //
    temp = (uint32_t)((freq / 1000000) * period); //freq输入的是真实时钟的值,单位是Hz 例如1MHz freq就输入1000000,
    CPUTimer_setPeriod(cpuTimer, temp - 1);       //除完1000000就=1了,period单位就从秒变为微秒了us

    //
    // Set pre-scale counter to divide by 1 (SYSCLKOUT):
    //
    CPUTimer_setPreScaler(cpuTimer, 0);//设置分频

    //
    // Initializes timer control register. The timer is stopped, reloaded,
    // free run disabled, and interrupt enabled.
    // Additionally, the free and soft bits are set
    //
    CPUTimer_stopTimer(cpuTimer);
    CPUTimer_reloadTimerCounter(cpuTimer);
    CPUTimer_setEmulationMode(cpuTimer,
                              CPUTIMER_EMULATIONMODE_STOPAFTERNEXTDECREMENT);
    CPUTimer_enableInterrupt(cpuTimer);

    CPUTimer_startTimer(cpuTimer);
}

记得在sys.h头文件中声明改函数

/*
 * sys.h
 *
 *  Created on: 2025年4月1日
 *      Author: 老亚索
 */

#ifndef APP_INC_SYS_H_
#define APP_INC_SYS_H_

#include "device.h"
#include "driverlib.h"

void configCPUTimer(uint32_t cpuTimer, float freq, float period); //声明main.c中所调用的函数

#endif /* APP_INC_SYS_H_ */

四.创建interruptISR.c(中断服务函数)

/*
 * interruptISR.c
 *
 *  Created on: 2025年4月1日
 *      Author: 老亚索
 */

#include "device.h"
#include "driverlib.h"
#include "board.h"

int i = 0 ;

__interrupt void INT_myCPUTIMER2_ISR(void) //中断服务函数 注意函数名要与board.h中声明的一样
{


            GPIO_writePin(LED4, i);
            GPIO_writePin(LED5, 1-i);
            i = 1 - i;


}

特别注意中断服务函数名要与board.h中声明的一样。

五.烧录测试

看是否能通过main.c文件中函数configCPUTimer(myCPUTIMER2_BASE, DEVICE_SYSCLK_FREQ, 2000000);的第三个参数来控制时间 

main.c文件如下

/*
 * main.c
 *
 *  Created on: 2025年4月1日
 *      Author: 13090
 */
#include "device.h"
#include "driverlib.h"
#include "board.h"
#include "sys.h"

int main(void)
{
        Device_init(); //初始化设备时钟和外设
        Device_initGPIO();  //禁用pin锁并启用内部上拉。
        Interrupt_initModule();  //初始化PIE并清除PIE寄存器。禁用CPU中断。
        Interrupt_initVectorTable(); //中断向量表初始化
        Board_init(); //PinMux和外设初始化
        //C2000Ware_libraries_init();//C2000Ware库初始化

        //第一个参数CPU-Timer号,第二个参数是时钟主频150MHz(可以在选中按F3去.h里看),第三个参数是周期(多少us一个周期)
        configCPUTimer(myCPUTIMER2_BASE, DEVICE_SYSCLK_FREQ, 1000000);

        //
        // Enable Global Interrupt (INTM) and real time interrupt (DBGM)
        //
        EINT;
        ERTM;

    while(1)
    {

    }

}



2000000us=2秒 观察led4与led5闪烁间隔

1000000us=1秒 观察led4与led5闪烁间隔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值