By Mcuzone
调试串口波特率:115200-uart2
基于MDKK70-EK_T7硬件平台
关键词: Freescale 飞思卡尔 Kinetis MQX Cortex-M4 K70 MDKK70 核心板 开发板 例程 demo hwtimer isr
注册用户中断服务函数的方法
串口输出:
#define MAIN_TASK 10
extern void main_task(uint_32);
extern void new_tick_isr(pointer);
const TASK_TEMPLATE_STRUCT MQX_template_list[] =
{
/* Task Index, Function, Stack, Priority, Name, Attributes, Param, Time Slice */
{ MAIN_TASK, main_task, 2000, 8, "Main", MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};
typedef struct my_isr_struct
{
pointer OLD_ISR_DATA;
void (_CODE_PTR_ OLD_ISR)(pointer);
_mqx_uint TICK_COUNT;
} MY_ISR_STRUCT, _PTR_ MY_ISR_STRUCT_PTR;
/*ISR*-----------------------------------------------------------
*
* ISR Name : new_tick_isr
* Comments :
* This ISR replaces the existing timer ISR, then calls the
* old timer ISR.
*END*-----------------------------------------------------------*/
void new_tick_isr
(
pointer user_isr_ptr
)
{
MY_ISR_STRUCT_PTR isr_ptr;
isr_ptr = (MY_ISR_STRUCT_PTR)user_isr_ptr;
isr_ptr->TICK_COUNT++;
/* Chain to the previous notifier */
(*isr_ptr->OLD_ISR)(isr_ptr->OLD_ISR_DATA);
}
/*TASK*----------------------------------------------------------
*
* Task Name : main_task
* Comments :
* This task installs a new ISR to replace the timer ISR.
* It then waits for some time, finally printing out the
* number of times the ISR ran.
*END*-----------------------------------------------------------*/
void main_task
(
uint_32 initial_data
)
{
MY_ISR_STRUCT_PTR isr_ptr;
isr_ptr = _mem_alloc_zero((_mem_size)sizeof(MY_ISR_STRUCT));
isr_ptr->TICK_COUNT = 0;
isr_ptr->OLD_ISR_DATA =
_int_get_isr_data(BSP_TIMER_INTERRUPT_VECTOR);
isr_ptr->OLD_ISR =
_int_get_isr(BSP_TIMER_INTERRUPT_VECTOR);
_int_install_isr(BSP_TIMER_INTERRUPT_VECTOR, new_tick_isr,
isr_ptr);
_time_delay_ticks(200);
printf("\nTick count = %d\n", isr_ptr->TICK_COUNT);
_task_block();
}
基于MDKK70-EK_T7硬件平台
关键词: Freescale 飞思卡尔 Kinetis MQX Cortex-M4 K70 MDKK70 核心板 开发板 例程 demo hwtimer isr
注册用户中断服务函数的方法
串口输出:
#define MAIN_TASK 10
extern void main_task(uint_32);
extern void new_tick_isr(pointer);
const TASK_TEMPLATE_STRUCT MQX_template_list[] =
{
/* Task Index, Function, Stack, Priority, Name, Attributes, Param, Time Slice */
{ MAIN_TASK, main_task, 2000, 8, "Main", MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};
typedef struct my_isr_struct
{
pointer OLD_ISR_DATA;
void (_CODE_PTR_ OLD_ISR)(pointer);
_mqx_uint TICK_COUNT;
} MY_ISR_STRUCT, _PTR_ MY_ISR_STRUCT_PTR;
/*ISR*-----------------------------------------------------------
*
* ISR Name : new_tick_isr
* Comments :
* This ISR replaces the existing timer ISR, then calls the
* old timer ISR.
*END*-----------------------------------------------------------*/
void new_tick_isr
(
pointer user_isr_ptr
)
{
MY_ISR_STRUCT_PTR isr_ptr;
isr_ptr = (MY_ISR_STRUCT_PTR)user_isr_ptr;
isr_ptr->TICK_COUNT++;
/* Chain to the previous notifier */
(*isr_ptr->OLD_ISR)(isr_ptr->OLD_ISR_DATA);
}
/*TASK*----------------------------------------------------------
*
* Task Name : main_task
* Comments :
* This task installs a new ISR to replace the timer ISR.
* It then waits for some time, finally printing out the
* number of times the ISR ran.
*END*-----------------------------------------------------------*/
void main_task
(
uint_32 initial_data
)
{
MY_ISR_STRUCT_PTR isr_ptr;
isr_ptr = _mem_alloc_zero((_mem_size)sizeof(MY_ISR_STRUCT));
isr_ptr->TICK_COUNT = 0;
isr_ptr->OLD_ISR_DATA =
_int_get_isr_data(BSP_TIMER_INTERRUPT_VECTOR);
isr_ptr->OLD_ISR =
_int_get_isr(BSP_TIMER_INTERRUPT_VECTOR);
_int_install_isr(BSP_TIMER_INTERRUPT_VECTOR, new_tick_isr,
isr_ptr);
_time_delay_ticks(200);
printf("\nTick count = %d\n", isr_ptr->TICK_COUNT);
_task_block();
}
串口输出: