【简介】
S32K3 芯片中集成了STM 模块,因为RTD 驱动库中的超时可以使用DUMY的方式或者Systick 作为驱动库超时检测,DUMY 的方式无法实现一个精确的计时,Systick 定时器虽然可以提供精确的计时但是在RTOS环境下该定时器通常作为是系统调度定时器使用,在RTD的驱动库中也支持用户自定义Timer 接入RTD库,我们可以使用STM来实现该功能。以下是芯片RM手册中STM IP 的框图。

从上述框图可以看出STM 的设计还是比较简洁的,STM 模块有多个channel,每个chennel 可以独立配置触发中断的超时时间。从时钟树可以看出STM模块的时钟配置默认为48MHZ


【STM参数配置】
我们继续使用32DS的配置工具来配置STM参数,参数主要分为定时器参数配置及channel 参数配置。
配置STM 使能channel 0 和 中断。

配置分频系数根据上述的时钟信息分频出一个1M的定时器时钟输入。

参数配置好之后在Init_ctrl 中开启对应中断处理函数。

配置完成后我们编写如下的测试代码启动timer 配置的周期为10ms
Stm_Ip_Init(0, &STM_0_InitConfig_PB); Stm_Ip_InitChannel(0,STM_0_ChannelConfig_PB); Stm_Ip_StartCounting(0,0,10000);
并在回调函数中添加打印:
void Custom_Timer_Callback(uint8_t channel)
{
PRINTF("STM %d.\n",channel);
}代码运行后 log 打印周期为10ms运行结果和预期一致。

我要赚赏金
