TC264学习(2)

定时器学习


/**
 * 	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定时中断 时间
 *  函数返回:无
 *  修改时间:2020310*  举    例: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
 *  函数返回:无
 *  修改时间:2020310*  举    例:STM_DelayUs(STM0, 5000);  //延时5000us
 *  备    注:使用延时函数时,请确保对应STM模块调用过STM_Init函数
 *  函数名称:uint32  STM_GetNowUs(STM_t stm)
 *  功能说明:STM获取当前时间
 *  参数说明:
 * @param    stm      : STM标号     STM0 、 STM1
 * @param    us       : STM延时     时间 us
 *  函数返回:无
 *  修改时间:2020310*  举    例: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);                     //延时等待
 	}
 }

发布了85 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44146373/article/details/105374091
tc
264