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/06/28 15:39:55
![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;](/uploads/image/z/12821762-2-2.jpg?t=C%E8%AF%AD%E8%A8%80interruptvoid+ISR_int0%28void%29+interrupt+0%7Bsta%3DSPI_Read%28STATUS%29%3B+%2F%2F+read+register+STATUS%27s+valueif%28RX_DR%29+%2F%2F+if+receive+data+ready%28RX_DR%29interrupt%7BSPI_Read_Buf%28RD_RX_PLOAD%2Crx_buf%2CTX_PLOAD_WIDTH%29%3B%2F%2F+read+receive+payload+from+RX_FIFO+bufferflag%3D1%3B)
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都会暂停它并立即执行这种中断处理函数.中断处理函数执行完成后又恢复之前的程序位置继续执行.
中断的产生,不是由调用引起的,是由外界触发的.就像,有人敲门,你就要去开门,这不等于你去开门了,就一定有人敲门.
另,中断函数不能被直接调用,否则会出错.