C语言interruptvoid ISR_int0(void) interrupt 0{sta=SPI_Read(STATUS); // read register STATUS's valueif(RX_DR) // if receive data ready(RX_DR)interrupt{SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO bufferflag=1;

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/20 01:32:53
C语言interruptvoid ISR_int0(void) interrupt 0{sta=SPI_Read(STATUS); // read register STATUS's valueif(RX_DR) // if receive data ready(RX_DR)interrupt{SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO bufferflag=1;

C语言interruptvoid ISR_int0(void) interrupt 0{sta=SPI_Read(STATUS); // read register STATUS's valueif(RX_DR) // if receive data ready(RX_DR)interrupt{SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO bufferflag=1;
C语言interrupt
void ISR_int0(void) interrupt 0
{
sta=SPI_Read(STATUS); // read register STATUS's value
if(RX_DR) // if receive data ready(RX_DR)interrupt
{
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
flag=1;
}
if(MAX_RT)
{
SPI_RW_Reg(FLUSH_TX,0);
}
SPI_RW_Reg(WRITE_REG+STATUS,sta);// clear RX_DR or TX_DS or MAX_RT interrupt flag
}
尤其是"interrupt 怎么可以直接放函数后面,不用另起一行?
那是不是调用这个函数 ISR_int0后,就产生中断0?

C语言interruptvoid ISR_int0(void) interrupt 0{sta=SPI_Read(STATUS); // read register STATUS's valueif(RX_DR) // if receive data ready(RX_DR)interrupt{SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO bufferflag=1;
二楼的说得很对.它是一个中断处理函数,与一般的函数的区别在于他被调用的方式.一般的函数是由其上一层函数调用而得到执行.而中断函数是是外围设备触发它执行的.比如说:SPI接收到一字节的数据、ADC采样完成、定时器发生溢出等等.一旦这些事件发生了,只要中断处于使能状态,就会触发对应的中断.
不管主程序执行到什么地方,CPU都会暂停它并立即执行这种中断处理函数.中断处理函数执行完成后又恢复之前的程序位置继续执行.
中断的产生,不是由调用引起的,是由外界触发的.就像,有人敲门,你就要去开门,这不等于你去开门了,就一定有人敲门.
另,中断函数不能被直接调用,否则会出错.