有关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条回答
yzb1019
1楼-- · 2020-02-20 02:03
我是来学习的,不过觉得简单明了的话,何必过分追求模块化。当然最好是做到,我不太懂楼主说的,希望有高人指点
Lu.Shi
2楼-- · 2020-02-20 06:23
 精彩回答 2  元偷偷看……
yzb1019
3楼-- · 2020-02-20 10:36
Lu.Shi 发表于 2015-1-5 09:41
感谢回复,当然我也同意您的观点,也是希望简单一点,直接把ISR_PIT0()放到UART.c的模块中,这样直接在中 ...

哈哈,不用啊。为什么还没有高手回复?继续帮你支持
luckner
4楼-- · 2020-02-20 13:28
Lu.Shi 发表于 2015-1-5 09:41
感谢回复,当然我也同意您的观点,也是希望简单一点,直接把ISR_PIT0()放到UART.c的模块中,这样直接在中 ...

您是想通过串口触发中断吗
Lu.Shi
5楼-- · 2020-02-20 17:06
luckner 发表于 2015-1-5 11:02
您是想通过串口触发中断吗

感谢您的回复,我是打算UART能在每100ms就发送参数的值到PC,所以就有PIT0时间一到就要执行UART的发送数据
luckner
6楼-- · 2020-02-20 21:34
Lu.Shi 发表于 2015-1-5 11:06
感谢您的回复,我是打算UART能在每100ms就发送参数的值到PC,所以就有PIT0时间一到就要执行UART的发送数 ...

这个很好做啊  pit定时100ms  然后调用串口发送程序啊

一周热门 更多>