有关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的内容?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
Lu.Shi
1楼-- · 2020-02-21 19:32
luckner 发表于 2015-1-5 16:22
把uart里面的移植过去不就行了?

感谢回复,的确这是个省事的方法,但是如果直接把UART的内容放到PIT的中断里面,那我何必要分两个模块,何必要考虑模块化设计呢,您说是不
luckner
2楼-- · 2020-02-22 01:04
Lu.Shi 发表于 2015-1-6 08:36
感谢回复,的确这是个省事的方法,但是如果直接把UART的内容放到PIT的中断里面,那我何必要分两个模块, ...

好吧,我还是不太明白您的设计思路。抱歉没有回答好您的问题。
Lu.Shi
3楼-- · 2020-02-22 05:12
luckner 发表于 2015-1-6 09:33
好吧,我还是不太明白您的设计思路。抱歉没有回答好您的问题。

客气了,还是很感谢您的回复
Ray______
4楼-- · 2020-02-22 09:20
弄好定时时间,然后就发,怕发送时间太长就发送时关定时,不过按道理没那么大数据吧
Lu.Shi
5楼-- · 2020-02-22 13:33
 精彩回答 2  元偷偷看……
luckner
6楼-- · 2020-02-22 15:10
Lu.Shi 发表于 2015-1-6 16:43
所谓鱼和熊掌不可兼得,最终还是选择直接将PIT的中断入口函数放在了UART模块里面 ...

这也算是没办法的办法了

一周热门 更多>