有关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条回答
ijlc1314
1楼-- · 2020-02-22 17:21
使用回调函数可否
franki
2楼-- · 2020-02-22 17:58
Lu.Shi 发表于 2015-1-6 08:34
感谢回复,这个方法可以参考

我经常这么干的 ,效果还不错
Juggernaut
3楼-- · 2020-02-22 19:20
ijlc1314 发表于 2015-1-6 18:31
使用回调函数可否

同感……
ijlc1314
4楼-- · 2020-02-23 00:04
 精彩回答 2  元偷偷看……
fengyunyu
5楼-- · 2020-02-23 01:51
信号量、互斥量之类
fengyunyu
6楼-- · 2020-02-23 07:06
不用os的话,就弄个全局变量做判断标志

一周热门 更多>