(四) timer+pit(定时器中断)+encoder(编码器)-逐飞TC264库学习(对比STM32 HAL库)

本文介绍了嵌入式系统中PIT定时器的初始化、中断处理、中断优先级配置,以及与编码器接口的示例,包括计时器周期中断、计数器操作和编码器数据采集与清除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​​​​pit(定时器中断)

PIT , 是programmable interval timer 可编程间隔定时器 DSC中的器件 的缩写,所以就是定时器中断,有点像32里的timer(TIMx)

目前看来一共能用通道的有四个

typedef enum // 枚举通道号
{
    CCU60_CH0,
    CCU60_CH1,
    CCU61_CH0,
    CCU61_CH1,
}pit_index_enum;

因为涉及到中断,为方便设定中断优先级,所以要像uart那节一样先记得 

#include "isr_config.h"                 //一个设定优先级的头文件

/*********32里就可以直接通过cude来配置相关优先级了,一般保持默认也没事

***********/

初始化函数

pit_ms_init(PIT_NUM, 500);     

// 初始化 CCU6_0_CH0 (逐飞例程将PIT_NUM宏定义为CCU60_CH0)为周期中断 1000ms 周期

原型:#define pit_ms_init(pit_index, time)  pit_init((pit_index), (time*1000))   // (单位为 毫秒)

//-------------------------------------------------------------------------------------------------------------------
//  函数简介      pit_ms初始化
//  参数说明      pit_index           选择CCU6模块
//  参数说明      time                周期时间(单位:毫秒)
//  返回参数      void
//  使用示例      pit_ms_init(CCU60_CH0, 5);      // 设置周期中断5ms
//-------------------------------------------------------------------------------------------------------------------

类似的还有一个微秒的 pit_us_init(pit_index, time)

/*****这应该就相当于32里的(在MX中使能中断后的) HAL_TIM_Base_Start_IT(&htim2); ********/

中断回调函数(其实是个多层宏定义嵌套拓展怪,不断open declaration 后的东西超出了我的c语言理解范围,姑且就理解为函数吧)

//三个参数里的第一个在ADS里字体会被自动加粗,因为它其实是一个自定义函数名

IFX_INTERRUPT(cc60_pit_ch

TC377是一款嵌入式微控制器,其定时器模块可以产生中断,以实现定时功能。下面是TC377定时器中断的基本步骤: 1. 配置定时器模块:设置定时器的计数值、时钟频率等参数,使其能够按照预定的时间间隔产生中断。 2. 配置中断控制器:使能定时器中断,并设置中断优先级。 3. 编写中断服务函数:当定时器产生中断时,中断服务函数会被调用,可以在其中实现具体的定时功能。 4. 启动定时器:使定时器开始计数,当计数值达到预定值时,会产生中断,触发中断服务函数的执行。 下面是一个简单的示例代码,用于实现每隔1秒产生一次定时器中断: ``` #include <tc377.h> void timer_isr() // 定时器中断服务函数 { // 在这里实现定时功能 } int main() { // 配置定时器 TC377_Timer_Setup(1000000); // 定时器时钟频率为1MHz TC377_Timer_SetCount(1000000); // 定时器计数值为1秒 TC377_Timer_EnableInterrupt(); // 使能定时器中断 TC377_Interrupt_SetPriority(TC377_TIMER_IRQ, 1); // 设置定时器中断优先级 // 注册中断服务函数 TC377_Interrupt_RegisterHandler(TC377_TIMER_IRQ, timer_isr); // 启动定时器 TC377_Timer_Start(); while (1) { // 主循环 } return 0; } ``` 在上面的代码中,我们使用TC377的定时器模块实现了每隔1秒产生一次定时器中断,并在中断服务函数中实现了具体的定时功能。注意,中断服务函数的实现需要根据实际需求进行编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值