5748G

5748G学习(1)——PIT

  • Periodic Interrupt Timer-Real Time Interrupt Timer (PIT-RTI)
    • Register 简介
    • 示例代码
      • 官方示例代码

Periodic Interrupt Timer-Real Time Interrupt Timer (PIT-RTI)

5748G有PIT_0到PIT_15,共16个PIT channels。它们可以用于产生Interrupt,也可以用做特定外设的触发器。如图:

在这里插入图片描述
在这里插入图片描述

The PIT module is an array of timers that can be used to raise interrupts and triggers. It includes a dedicated Real Time Interrupt Timer (RTI), which runs on a separate clock and can be used for system wakeup in STOP mode.

Features
• One RTI (Real-Time Interrupt) timer to wakeup the CPU in stop mode
• Ability of timers to generate trigger pulses
• Ability of timers to generate interrupts
• Maskable interrupts
• Option to raise RTI interrupt, even when the bus clock is switched off
• Power saving with a separate input clock for the RTI timer. All other timers share.
one common core clock.
• Independent timeout periods for each timer

Register 简介

在这里插入图片描述

PIT Module Control Register (PIT_MCR)
在这里插入图片描述
在这里插入图片描述

PIT Upper Lifetime Timer Register (PIT_LTMR64H) and PIT Lower Lifetime Timer Register (PIT_LTMR64L)
当timer0与timer1链接时,用于获取当前值。

Timer Load Value Register (PIT_RTI_LDVAL)
在这里插入图片描述
设置定时器的起始值。

Current Timer Value Register (PIT_RTI_CVAL)
在这里插入图片描述

Timer Control Register (PIT_RTI_TCTRL)
在这里插入图片描述
在这里插入图片描述

Timer Flag Register (PIT_RTI_TFLG)
在这里插入图片描述
保存PIT的中断标志。在触发中断后,通过向此寄存器写1来清除中断标志。

Timer Load Value Register (PIT_LDVALn)

Current Timer Value Register (PIT_CVALn)

Timer Control Register (PIT_TCTRLn)

Timer Flag Register (PIT_TFLGn)

示例代码

官方示例代码

Initialization and application

 // turn on PIT
 PIT_MCR = 0x00;
 // RTI
 PIT_RTI_LDVAL = 0x004C4B3F; // setup RTI for 5000000 cycles
 PIT_RTI_TCTRL = PIT_TIE; // let RTI generate interrupts
 PIT_RTI_TCTRL |= PIT_TEN; // start RTI
 // Timer 1
 PIT_LDVAL1 = 0x0003E7FF; // setup timer 1 for 256000 cycles
 PIT_TCTRL1 = TIE; // enable Timer 1 interrupts 
 PIT_TCTRL1 |= TEN; // start Timer 1
 // Timer 3
 PIT_LDVAL3 = 0x0016E35F; // setup timer 3 for 1500000 cycles
 PIT_TCTRL3 |= TEN; // start Timer 3

configuration for chained timers

 // turn on PIT
 PIT_MCR = 0x00;
 // Timer 2
 PIT_LDVAL2 = 0x00000009; // setup Timer 2 for 10 counts
 PIT_TCTRL2 = TIE; // enable Timer 2 interrupt 
 PIT_TCTRL2 |= CHN; // chain Timer 2 to Timer 1
 PIT_TCTRL2 |= TEN; // start Timer 2
 // Timer 1
 PIT_LDVAL1 = 0x23C345FF; // setup Timer 1 for 600 000 000 cycles
 PIT_TCTRL1 = TEN; // start Timer 1

configuration for the lifetime timer

 // turn on PIT
 PIT_MCR = 0x00;
 // Timer 1
 PIT_LDVAL1 = 0xFFFFFFFF; // setup timer 1 for maximum counting period
 PIT_TCTRL1 = 0x0; // disable timer 1 interrupts
 PIT_TCTRL1 |= CHN; // chain timer 1 to timer 0
 PIT_TCTRL1 |= TEN; // start timer 1
 // Timer 0
 PIT_LDVAL0 = 0xFFFFFFFF; // setup timer 0 for maximum counting period
 PIT_TCTRL0 = TEN; // start timer 0
 //read first LTMR64H and then LTMR64L.
 current_uptime = PIT_LTMR64H<<32;
 current_uptime = current_uptime + PIT_LTMR64L;

PIT通道0初始化(基于官方例程)

void PIT0_init(uint32_t LDVAL) {
    PIT.TIMER[0].LDVAL.R = LDVAL;  	/* Load # Pit clocks to count */
    PIT.TIMER[0].TCTRL.B.TIE = 1;      	/* Enable interrupt */
//    INTC.PSR[226].B.PRC_SELN0 = 0x8;  /* IRQ sent to Core 0   ERROR!*/
    INTC.PSR[226].B.PRC_SELN0 = 1;  /* IRQ sent to Core 0 */
    INTC.PSR[226].B.PRIN =10;        /* IRQ priority = 10 (15 = highest) */
    PIT.TIMER[0].TCTRL.B.TEN = 1;      	/* enable channel */
}

中断函数

void PIT0_isr(void) {
	LED_DS4 = ~LED_DS4;         /* Toggle DS4 LED port */

    PIT.TIMER[0].TFLG.R = 1;  	/* Clear interrupt flag */
}

main函数中调用初始化函数

PIT0_init(40000000); /* Initialize PIT channel 0 for desired SYSCLK counts*/
             	 	 	 /* timeout= 40M  PITclks x 4 sysclks/1 PITclk x 1 sec/160Msysck */
    					 /*        = 40M x 4 / 160M = 160/160 = 1 sec.  */

效果LED_DS4一秒一闪。

这是一款基于Power Archite技术的32位汽车MCU。 MPC5748G可满足功能安全性,安全性和工业/汽车网关应用需求。 跟S32K系列相比,Calypso系列带有更多的资源和接口,提供多达6到8个CAN总线(均支持CAN FD)。 对以太网应用,请注意S32K148可以提供100MB以太网,Calypso系列提供1或者2个100MB以太网,带Switch功能,客户根据所需资源来选择。 Calypso内置HSM模块,可以实现Evita Medium,新版SHE固件也可实现RSA2048等非对称加密功能和Harsh算法等。 MPC56xx/57xx SW的市场计划 1. 免费的生产级AUTOSAR 3.0 / 4.0软件(MCAL和OS),用于MPC56xx器件的开发和生产 2. 用于开发和生产的MPC57xx器件的生产级AUTOSAR 3.0 / 4.0软件(MCAL和OS)的价格降低 3. 用于MPC56xx和MPC57xx器件的免费生产级核心自测试软件,用于开发和生产 4. 免费的生产级非Autosar SDK for MPC57xx,用于开发和生产 5. 适用于USB,SDHC,TCP / IP的新型第三方中间件产品(Calypso) 目标应用: •汽车雷达系统 •混合动力和电动汽车动力逆变器 •电动助力转向系统(EPS) •安全气囊系统 •安全域控制 •安全电机控制器 •主动驾驶辅助系统 •自适应巡航控制 •制动和稳定性控制 •主动悬架 • 以太网网关,主处理器,可以提供Secure Gateway Reference Design,支持FOTA功能 • T-Box,信号桥接处理器,带有LIN / CAN FDx8 / 以太网x2 / USB / SDHC接口 • 车身域控制器, 最大带有324Pin, 6MB Flash, 三核,及多个通信接口 • 工业市场:电力监控/安全通信等 方案来源于大大通
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值