CH438Q中斷問題

/**************************************************************************

? ? ? ? ? 設(shè)置CH438串口7的寄存器

**************************************************************************/

//? ? UART7_Reset();

? ? div = ( Fpclk >> 4 ) / CH438UART7_BPS;

? ? DLM = div >> 8;

? ? DLL = div & 0xff;

? ? WriteCH438Data( REG_LCR7_ADDR, BIT_LCR_DLAB );? ? /* 設(shè)置DLAB為1 */

HAL_Delay(5);

? ? WriteCH438Data( REG_DLL7_ADDR, DLL );? ? ? ? ? ? ?/* 設(shè)置波特率 */

HAL_Delay(5);

? ? WriteCH438Data( REG_DLM7_ADDR, DLM );

HAL_Delay(5);

WriteCH438Data( REG_LCR7_ADDR, 0X00 );? ? /* 設(shè)置DLAB為0 */

HAL_Delay(5);

WriteCH438Data( REG_FCR7_ADDR, BIT_FCR_FIFOEN| BIT_FCR_TFIFORST|BIT_FCR_RFIFORST );? ? /* 設(shè)置FIFO模式,觸發(fā)點(diǎn)為1字節(jié) */

HAL_Delay(5);

? ? WriteCH438Data( REG_LCR7_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 );? ? ? /* 字長8位,1位停止位、無校驗 */

HAL_Delay(5);

//? ? WriteCH438Data( REG_IER7_ADDR, BIT_IER_IERECV? );? ? /* 使能中斷 */

//HAL_Delay(5);

//

//WriteCH438Data( REG_MCR7_ADDR, BIT_MCR_OUT2);? ? ? ? ? ? ? /* 允許中斷輸出 */

}

上述是對串口7的初始化配置,麻煩看下有沒有問題?

現(xiàn)在出現(xiàn)的現(xiàn)象是:

1、我在初始化中沒有打開中斷,但是當(dāng)數(shù)據(jù)輸入時,INT引腳依然能變化,引發(fā)中斷。

2、SSR專用寄存器,不管是在允許還是不允許中斷的情況下,讀這個寄存器,均是0XF1,即使是剛上電,沒有數(shù)據(jù)輸入,讀這個寄存器也不是0.

您好,芯片的INT不僅是只針對串口7一個的,所有串口都會共用這個中斷,您可以在產(chǎn)生的中斷里面讀取,查看實(shí)際產(chǎn)生的中斷是否為串口7產(chǎn)生。如果您希望串口不產(chǎn)生中斷,您代碼里面需要對MCR操作一下把OUT2位寫0.

SSR寄存器只是一個讀取當(dāng)前8個串口是否有中斷產(chǎn)生,讀取的值是會產(chǎn)生變化的。


我現(xiàn)在只打開了一個串口7,,其他串口我并未初始化。那么,SSR寄存器中是否只應(yīng)該S7INT是對應(yīng)的中斷標(biāo)志位,SSR的其他中斷標(biāo)志位是否應(yīng)該為0?

我現(xiàn)在的問題是,SSR寄存器中的中斷標(biāo)志位是亂的,上電初始化時就是一個固定值,我換了2塊芯片,都是一個不同的固定值,也不會隨著相應(yīng)串口的中斷來置位和清零。

我認(rèn)為,或者這個SSR寄存器就是壞了,或者就應(yīng)該有這個SSR的清零的機(jī)制?


看著配置沒啥問題,你可以試試通過IER的LOWPOWER位,把其他不用的串口在初始化時關(guān)掉,再監(jiān)測SSR寄存器看看


您好,您可以在串口初始化之后,優(yōu)先讀取以下SSR寄存器,正常這個寄存器讀出來應(yīng)該是00。而不是隨機(jī)值。如果讀出一直是隨機(jī)值,您可以看一下是否讀寄存器的地址輸入有誤。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频