在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > GNU ARM匯編--(七)s3c2440的串口控制

        GNU ARM匯編--(七)s3c2440的串口控制

        作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏

        UART MODEM CONTROL REGISTER

        這個和MODEM控制相關,設置為默認值就行.

        UART TX/RX STATUS REGISTER

        這個寄存器是只讀的,負責反映發(fā)送接收的狀態(tài)

        UART ERROR STATUS REGISTER

        這個寄存器也是只讀的,負責反映錯誤狀態(tài)

        UART FIFO STATUS REGISTER

        這個寄存器也是只讀的,負責反映FIFO的狀態(tài)

        UART MODEM STATUS REGISTER

        這個寄存器是MODEM狀態(tài)的,不用管它

        UART TRANSMIT BUFFER REGISTER (HOLDING REGISTER & FIFO REGISTER)

        發(fā)送緩沖寄存器:FIFO模式下叫FIFO寄存器,非FIFO模式下叫Holding寄存器

        需要注意的就是大小端

        UART RECEIVE BUFFER REGISTER (HOLDING REGISTER & FIFO REGISTER)

        接收緩沖寄存器:FIFO模式下叫FIFO寄存器,非FIFO模式下叫Holding寄存器

        UART BAUD RATE DIVISOR REGISTER

        波特率除數(shù)寄存器

        UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
        ( UART clock: PCLK, FCLK/n or UEXTCLK )

        看完datasheet后,我們看一下TQ2440的原理圖:

        由原理圖可以看出,TQ2440使用的UART0,我們用MAX232芯片做電平轉換.

        有了datasheet和原理圖,下面就開始寫匯編代碼了:

        時鐘初始化和uart初始化用匯編寫的:

        [cpp]view plaincopy
        1. @.externuart_test
        2. .equGPBCON,0x56000010
        3. .equGPBDAT,0x56000014
        4. .equGPB5_out,(1<<(5*2))
        5. .equGPB6_out,(1<<(6*2))
        6. .equGPB7_out,(1<<(7*2))
        7. .equGPB8_out,(1<<(8*2))
        8. .equGPHCON,0x56000070
        9. .equGPHDAT,0x56000074
        10. .equGPBVALUE,(GPB5_out|GPB6_out|GPB7_out|GPB8_out)
        11. .equLOCKTIME,0x4c000000
        12. .equMPLLCON,0x4c000004
        13. .equUPLLCON,0x4c000008
        14. .equM_MDIV,92
        15. .equM_PDIV,1
        16. .equM_SDIV,1
        17. .equU_MDIV,56
        18. .equU_PDIV,2
        19. .equU_SDIV,2
        20. .equCLKDIVN,0x4c000014
        21. .equDIVN_UPLL,0
        22. .equHDIVN,1
        23. .equPDIVN,1@FCLK:HCLK:PCLK=1:2:4
        24. .equULCON0,0x50000000
        25. .equIR_MODE,0x0@[6]正常模式
        26. .equParity_Mode,0x0@[5:3]無校驗位
        27. .equNum_of_stop_bit,0x0@[2]一個停止位
        28. .equWord_length,0b11@[1:0]8個數(shù)據(jù)位
        29. .equUCON0,0x50000004
        30. .equFCLK_Div,0@[15:12]時鐘源選擇用PCLK,所以這里用默認值
        31. .equClk_select,0b00@[11:10]時鐘源選擇使用PCLK
        32. .equTx_Int_Type,1@[9]中斷請求類型為Level
        33. .equRx_Int_Type,0@1@[8]中斷請求類型為Level
        34. .equRx_Timeout,0@[7]
        35. .equRx_Error_Stat_Int,1@[6]
        36. .equLoopback_Mode,0@[5]正常模式
        37. .equBreak_Sig,0@[4]不發(fā)送終止信號
        38. .equTx_Mode,0b01@[3:2]中斷請求或輪循模式
        39. .equRx_Mode,0b01@[1:0]中斷請求或輪循模式
        40. .equUFCON0,0x50000008
        41. .equTx_FIFO_Trig_Level,0b00@[7:6]
        42. .equRx_FIFO_Trig_Level,0b00@[5:4]
        43. .equTx_FIFO_Reset,0b0@[2]
        44. .equRx_FIFO_Reset,0b0@[1]
        45. .equFIFO_Enable,0b0@[0]非FIFO模式
        46. .equUMCON0,0x5000000C@這個寄存器可以不管的
        47. .equUTRSTAT0,0x50000010
        48. .equUERSTAT0,0x50000014
        49. .equUFSTAT0,0x50000018
        50. .equUMSTAT0,0x5000001C
        51. .equUTXH0,0x50000020@(L小端)
        52. .equURXH0,0x50000024@(L小端)
        53. .equUBRDIV0,0x50000028
        54. .equUBRDIV,0x35@PCLK=400M/4=100MUBRDIV=(int)(100M/115200/16)-1=53=0x35


        評論


        技術專區(qū)

        關閉