timer1_isr.c

来自「基于Cortex-M3的全自动焊接机」· C语言 代码 · 共 50 行

C
50
字号
#include "hw_types.h"
#include "hw_memmap.h"
#include  <hw_timer.h>
#include  <timer.h>
#include  <hw_ints.h>
#include  <interrupt.h>
extern unsigned char send_sem;
extern void exchange_485_rec(void);
extern void exchange_485_send(void);
extern void TxFIFOFill(void);
extern unsigned int timerloadvalue;


void start_timer1(unsigned char uc_delay)//定时uc_delay ms
{
    TimerDisable(TIMER1_BASE , TIMER_A);
    TimerLoadSet(TIMER1_BASE , TIMER_A , (timerloadvalue*uc_delay)/1000);          
    TimerIntEnable(TIMER1_BASE , TIMER_TIMA_TIMEOUT);           //  使能定时器超时中断
    TimerEnable(TIMER1_BASE , TIMER_A);
    IntEnable(INT_TIMER1A);
}
void stop_timer1(void)
{
    TimerDisable(TIMER1_BASE , TIMER_A);
    TimerIntDisable(TIMER1_BASE , TIMER_TIMA_TIMEOUT);
    IntDisable(INT_TIMER1A); //彻底停止中断进入
    
}
#if 1
void timer1_isr(void)
{
    
    unsigned long  ulStatus;

    ulStatus  =  TimerIntStatus(TIMER1_BASE , true);            //  读取中断状态
    TimerIntClear(TIMER1_BASE , ulStatus);                      //  清除中断状态,重要!

    if(send_sem)
    {
        exchange_485_send();  
        TxFIFOFill();//填充发送数据
        send_sem = 0;//准备转为接收状态的预先动作
    }
    else
    {
        exchange_485_rec();
        stop_timer1();
    }
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?