TC264学习(2)

Galatea ·
更新时间:2024-11-14
· 669 次阅读

定时器学习

/** * STM模块枚举 */ typedef enum { STM0 = 0, STM1 }STM_t; /** * STM通道枚举 */ typedef enum { STM_Channel_0 = 0, STM_Channel_1 }STM_Channel_t; /** STM定时器中断 STM0 channel0 中断服务函数优先级 范围:1-255 数字越大 优先级越高 注意优先级不要重复 */ #define STM0_CH0_PRIORITY 110 /** STM定时器中断 STM0 channel0 中断归哪个内核管理? 范围:0:CPU0 1:CPU1 3:DMA*/ #define STM0_CH0_VECTABNUM 0 /** STM定时器中断 STM0 channel1 中断服务函数优先级 范围:1-255 数字越大 优先级越高 注意优先级不要重复 */ #define STM0_CH1_PRIORITY 111 /** STM定时器中断 STM0 channel1 中断归哪个内核管理? 范围:0:CPU0 1:CPU1 3:DMA*/ #define STM0_CH1_VECTABNUM 0 /** STM定时器中断 STM1 channel0 中断服务函数优先级 范围:1-255 数字越大 优先级越高 注意优先级不要重复 */ #define STM1_CH0_PRIORITY 112 /** STM定时器中断 STM1 channel0 中断归哪个内核管理? 范围:0:CPU0 1:CPU1 3:DMA*/ #define STM1_CH0_VECTABNUM 1 /** STM定时器中断 STM1 channel1 中断服务函数优先级 范围:1-255 数字越大 优先级越高 注意优先级不要重复 */ #define STM1_CH1_PRIORITY 113 /** STM定时器中断 STM1 channel1 中断归哪个内核管理? 范围:0:CPU0 1:CPU1 3:DMA*/ #define STM1_CH1_VECTABNUM 1 * 函数名称:void STM_Init(STM_t stm, STM_Channel_t channel, uint32 us) * 功能说明:STM初始化 * 参数说明: * @param stm : STM标号 STM0 、 STM1 * @param channel : STM通道 STM_Channel_0 STM_Channel_1 * @param us : STM定时中断 时间 * 函数返回:无 * 修改时间:2020年3月10日 * 举 例:STM_Init(STM0, STM_Channel_0, 50000); //STM0 通道0初始化 50000us 进入一次中断 * 备 注:外部中断服务函数在LQ_STM.c中 中断优先级配置在LQ_STM.h中 可以自行修改 * 函数名称:void STM_DelayUs(STM_t stm, uint32 us) * 功能说明:STM延时 * 参数说明: * @param stm : STM标号 STM0 、 STM1 * @param us : STM延时 时间 us * 函数返回:无 * 修改时间:2020年3月10日 * 举 例:STM_DelayUs(STM0, 5000); //延时5000us * 备 注:使用延时函数时,请确保对应STM模块调用过STM_Init函数 * 函数名称:uint32 STM_GetNowUs(STM_t stm) * 功能说明:STM获取当前时间 * 参数说明: * @param stm : STM标号 STM0 、 STM1 * @param us : STM延时 时间 us * 函数返回:无 * 修改时间:2020年3月10日 * 举 例:int32_t NowTime = STM_GetNowUs(STM0); //获取STM0 当前时间 * 备 注:使用延时函数时,请确保对应STM模块调用过STM_Init函数

例子

//中断服务函数,注意格式与其它单片机不同 IFX_INTERRUPT(STM0SR0ISR, 0, IFX_INTPRIO_STM0_SR0) { IfxStm_clearCompareFlag(&MODULE_STM0, stmCompareConfig.comparator);//清除中断标志 IfxStm_increaseCompare(&MODULE_STM0, stmCompareConfig.comparator, stmCompareConfig.ticks);//开启新的中断配置,开始下次中断 //用户任务 if(++stm_led_ind > 500)//500*1000us=500ms闪灯 { stm_led_ind = 0; //计数清零 IfxPort_togglePin(&MODULE_P10, 5);//核心板上LED状态翻转一次 } } /************************************************************************* * 函数名称:void Test_STM0 (void) * 功能说明:测试程序 * 参数说明:无 * 函数返回:无 * 修改时间:2020年3月10日 * 备 注:核心板上的LED固定时间P10.6翻转,LED灯闪烁,中断时P10.5闪灯 *************************************************************************/ void Test_STM0 (void) { GPIO_init(); //GPIO P10.5和P10.6 STM0_init(); //STM初始化 while(1) { IfxPort_togglePin(&MODULE_P10, 6);//LED电平翻转,闪烁 delayms(500); //延时等待 } }
作者:他 不懂



学习 tc

需要 登录 后方可回复, 如果你还没有账号请 注册新账号