在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計(jì)應(yīng)用 > GNU ARM匯編--(七)s3c2440的串口控制

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

        作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
      2. .global_main
      3. _main:
      4. ldrr0,=GPBCON
      5. ldrr1,=0x15400
      6. strr1,[r0]
      7. ldrr2,=GPBDAT
      8. blclock_setup
      9. bluart_init
      10. bldelay
      11. ldrlr,=loop
      12. @bluart_testdd
      13. ldrpc,_uart_test
      14. _uart_test:.worduart_test
      15. loop:
      16. bloop@死循環(huán)
      17. ledloop:
      18. ldrr1,=0x1c0
      19. strr1,[r2]
      20. bldelay
      21. ldrr1,=0x1a0
      22. strr1,[r2]
      23. bldelay
      24. ldrr1,=0x160
      25. strr1,[r2]
      26. bldelay
      27. ldrr1,=0x0e0
      28. strr1,[r2]
      29. bldelay
      30. bledloop
      31. clock_setup:
      32. ldrr0,=LOCKTIME
      33. ldrr1,=0xffffffff
      34. strr1,[r0]
      35. ldrr0,=CLKDIVN
      36. ldrr1,=(DIVN_UPLL<<3)|(HDIVN<<1)|(PDIVN<<0)
      37. strr1,[r0]
      38. ldrr0,=UPLLCON
      39. ldrr1,=(U_MDIV<<12)|(U_PDIV<<4)|(U_SDIV<<0)@Fin=12MUPLL=48M
      40. strr1,[r0]
      41. nop
      42. nop
      43. nop
      44. nop
      45. nop
      46. nop
      47. nop
      48. ldrr0,=MPLLCON
      49. ldrr1,=(M_MDIV<<12)|(M_PDIV<<4)|(M_SDIV<<0)@Fin=12MFCLK=400M
      50. strr1,[r0]
      51. movpc,lr
      52. uart_init:
      53. ldrr0,=GPHCON
      54. ldrr1,=0x2aaaa@配置GPIO復(fù)用規(guī)則為串口
      55. strr1,[r0]
      56. ldrr0,=ULCON0
      57. ldrr1,=(IR_MODE<<6)|(Parity_Mode<<3)|(Num_of_stop_bit<<2)|(Word_length<<0)@
      58. strr1,[r0]
      59. ldrr0,=UCON0
      60. ldrr1,=(FCLK_Div<<12)|(Clk_select<<10)|(Tx_Int_Type<<9)|(Rx_Int_Type<<8)|(Rx_Timeout<<7)|(Rx_Error_Stat_Int<<6)|(Loopback_Mode<<5)|(Break_Sig<<4)|(Tx_Mode<<2)|(Rx_Mode<<0)
      61. strr1,[r0]
      62. ldrr0,=UFCON0
      63. ldrr1,=(Tx_FIFO_Trig_Level<<6)|(Rx_FIFO_Trig_Level<<4)|(Tx_FIFO_Reset<<2)|(Rx_FIFO_Reset<<1)|(FIFO_Enable<<0)@
      64. strr1,[r0]
      65. ldrr0,=UBRDIV0
      66. ldrr1,=(UBRDIV<<0)
      67. strr1,[r0]
      68. movpc,lr
      69. delay:
      70. @ldrr3,=0x4ffffff
      71. ldrr3,=0xfffff
      72. delay1:
      73. subr3,r3,#1
      74. cmpr3,#0x0
      75. bnedelay1
      76. movpc,lr

      77. UART的測試代碼用C寫的:

        本文引用地址:http://www.biyoush.com/article/201611/321724.htm

        uart_test.c:

        [cpp]view plaincopy
        1. #include"uart_test.h"
        2. charuart_GetByte(void)
        3. {
        4. while(!(rUTRSTAT0&0x1));//WaituntilTHRisempty.
        5. returnRdURXH0();
        6. }
        7. voiduart_GetString(char*pt)
        8. {
        9. while(*pt)
        10. uart_GetByte();
        11. }
        12. voiduart_SendByte(intdata)
        13. {
        14. if(data==)
        15. {
        16. while(!(rUTRSTAT0&0x2));
        17. WrUTXH0();
        18. }
        19. while(!(rUTRSTAT0&0x2));//WaituntilTHRisempty.
        20. WrUTXH0(data);
        21. }
        22. //====================================================================
        23. voiduart_SendString(char*pt)
        24. {
        25. while(*pt)
        26. uart_SendByte(*pt++);
        27. }
        28. voiduart_test(void)
        29. {
        30. charstr[20]="helloworld";
        31. inta=97;
        32. //while(1)
        33. //uart_SendByte(a);
        34. uart_SendString(str);
        35. chars=uart_GetByte();
        36. //if(s==a)
        37. if(s==97)
        38. rGPBDAT=0x1c0;
        39. //uart_SendByte(a);
        40. //uart_SendByte(97);
        41. //uart_SendByte(a);
        42. uart_SendByte((int)s);
        43. uart_SendByte((int)s);
        44. }
        uart_test.h:

        [cpp]view plaincopy
        1. //#defineWrUTXH0(ch)(*(volatileunsignedchar*)0x50000023)=(unsignedchar)(ch)
        2. #defineWrUTXH0(ch)(*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch)
        3. #defineRdURXH0()(*(volatileunsignedchar*)0x50000024)
        4. #definerUTRSTAT0(*(volatileunsigned*)0x50000010)//UART0Tx/Rxstatus
        5. #definerGPBDAT(*(volatileunsigned*)0x56000014)


        到此,使用串口的輪循模式,可以實(shí)現(xiàn)串口的正常收發(fā)功能了~~

        中斷模式還沒寫,這個(gè)等到后面全面研究uboot的時(shí)候再回頭看,uboot用哪種模式,應(yīng)該就說明那種方式好,到時(shí)侯再實(shí)現(xiàn)吧


        上一頁 1 2 3 下一頁

        關(guān)鍵詞: ARM匯編s3c2440串口控

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉