串列埠中斷狀態函式理解

2021-10-07 17:41:32 字數 808 閱讀 6281

itstatus usart_getitstatus(usart_typedef* usartx, uint16_t usart_it)

/* get the usart register index /

usartreg = (((uint8_t)usart_it) >> 0x05);

/ get the interrupt position */

itmask = usart_it & it_mask;

itmask = (uint32_t)0x01 << itmask;

if (usartreg == 0x01) /* the it is in cr1 register / //判斷使能的是控制暫存器cr1的某位中斷使能位麼?

else if (usartreg == 0x02) / the it is in cr2 register / //判斷使能的是控制暫存器cr2的某位中斷使能位麼?

else / the it is in cr3 register */ //判斷使能的是控制暫存器cr3的某位中斷使能位麼?

bitpos = usart_it >> 0x08;

bitpos = (uint32_t)0x01 << bitpos;

bitpos &= usartx->sr; //判斷對應中斷標誌位是否被置位

if ((itmask != (uint16_t)reset)&&(bitpos != (uint16_t)reset))//如果中斷使能位被開啟,相應的中斷標誌位被置位時:bitstatus = set

else

return bitstatus;

}

串列埠中斷函式詳解

arm cortex m3 核心支援 256 個中斷 16 個核心 240 外部 和可程式設計 256 級中斷優先順序的設定。stm32支援的中斷共為84個 16個核心 68個外部 和16級可程式設計中斷優先順序的設定。aircr是nivc配置中乙個關鍵的暫存器,由於stm32有很多中斷,要處理這些...

串列埠中斷接收資料方式

微控制器中斷能夠及時響應外部觸發事件,在中斷函式中處理外部事件,處理完成之後退回到中斷點。中斷服務函式應該能最快速的解決觸發事件,快速退出中斷,不宜在中斷中處理複雜的執行演算法。所以中斷函式的編寫盡量簡單明瞭快速,下面以串列埠接收中斷為例來說明中斷處理函式的寫法。1.設定乙個全域性標誌,觸發中斷之後...

個人練習 串列埠中斷和通訊

寫中斷需要用到定時器 1.設定它的暫存器tmod 2.thx和tlx的值 這個是設定定時器的初值 3.開啟定時器 trx 1 注 序列口兩個暫存器 串列埠控制器 和 4.的格式 sm0 sm1 sm2 ren tb8 rb8 ti ri 1 sm0和sm1用來設定序列口的工作方式 0,1,2,3一共...