有关freescale MCU PIT timer 中断的程序模块化设计的问题

2020-02-19 21:22发布

本帖最后由 Lu.Shi 于 2015-1-5 11:05 编辑

请大家侃一侃,现在整个项目实现模块化的设计,对于freescale MCU有一个PIT的功能,它的中断入口函数个数和PIT 的timer 个数一样,所以按照模块化的设计所以的timer中断入口函数都在PIT.c的模块里面,但是如果其他的模块比如UART.c要使用到PIT的功能,当PIT的timer时间到,如何保证程序能直接进入到UART.c能执行它相应的task内容呢?
举例如下:
/*********************PIT.c***********************/
PIT_Initial() function
*****
ISR_PIT0() function
******
ISR_PIT1() function
*****
ISR_PIT2() function
*****
ISR_PIT3() function
*****
/*********************end************************/

/********************UART.c**********************/
UART_Initial() function
*******
UART_TimerTask() function(PIT0 中断时间到就发送数据)
******
/*********************end***********************/
所以根据上面的内容,当ISR_PIT0()时间一到,希望UART_TimerTask函数里发送数据到PC,但是要求不允许ISR函数里面有深度调用,即不能ISR_PIT0()直接调用UART_TimerTask(),也不允许ISR_PIT0()函数放到UART.c模块中(有违背模块化设计),这个时候怎么做能保证timer时间一到就直接执行到UART task的内容?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。