<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > LM3S9B96 的UART以中斷方式收發(fā)數(shù)據(jù)

          LM3S9B96 的UART以中斷方式收發(fā)數(shù)據(jù)

          作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          lm3s9b96的uart發(fā)送和接收都可以進(jìn)入用戶編寫的中斷處理函數(shù)。

          uart的配置無非是設(shè)置:波特率、數(shù)據(jù)位、停止位、奇偶校驗位等。
          下面是用uart1為例,配置成中斷方式收發(fā)數(shù)據(jù)

          #include "inc/lm3s9b96.h"
          #include "inc/hw_memmap.h"
          #include "inc/hw_types.h"
          #include "inc/hw_ints.h"
          #include "driverlib/interrupt.h"
          #include "driverlib/gpio.h"
          #include "driverlib/uart.h"
          #include "driverlib/sysctl.h"

          //*****************************************************************************
          //
          // 延時函數(shù)
          //
          //*****************************************************************************
          void Delay(volatile signed long nCount)
          {
          for(; nCount != 0; nCount--);
          }

          //*****************************************************************************
          //
          // Send a string to the UART.
          //
          //*****************************************************************************
          void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
          {
          // Loop while there are more characters to send.
          while (ulCount--)
          {
          // Write the next character to the UART.
          UARTCharPutNonBlocking(UART1_BASE, *pucBuffer++);
          }
          }

          //*****************************************************************************
          //
          // UART1初始化函數(shù)
          //
          //*****************************************************************************
          void UART1_Init(void)
          {
          // 使能UART1外設(shè)
          SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
          SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

          // Set GPIO B0 and B1 as UART pins
          GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
          GPIOPinConfigure(GPIO_PB0_U1RX);
          GPIOPinConfigure(GPIO_PB1_U1TX);

          // Configure the UART1 for 115200, 8-N-1 operation
          UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

          // Enable the UART interrupt
          IntEnable(INT_UART1);
          UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT);

          // Prompt for text to be entered
          //UARTSend((unsigned char *)"hello world", 11);
          }


          //*****************************************************************************
          //
          // 主函數(shù)
          //
          //*****************************************************************************
          int main(void)
          {
          // Set the clocking to run directly from the crystal.
          SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

          UART1_Init();
          IntMasterEnable(); // 開總中斷

          while (1)
          {
          }
          }

          //*****************************************************************************
          //
          // The UART1 interrupt handler.
          //
          //*****************************************************************************
          void UART1IntHandler(void)
          {
          unsigned long ulStatus;

          // Get the interrrupt status.
          ulStatus = UARTIntStatus(UART1_BASE, true);

          // Clear the asserted interrupts.
          UARTIntClear(UART1_BASE, ulStatus);

          // Loop while there are characters in the receive FIFO.
          while (UARTCharsAvail(UART1_BASE))
          {
          // Read the next character from the UART and write it back to the UART.
          UARTCharPutNonBlocking(UART1_BASE, UARTCharGetNonBlocking(UART1_BASE));
          }
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/317010.htm如果想發(fā)送數(shù)據(jù)時,也進(jìn)入中斷處理函數(shù),則將:
          UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT);
          改為
          UARTIntEnable(UART1_BASE,UART_INT_TX| UART_INT_RX | UART_INT_RT);
          按照前面講的中斷映射表的配置,將startup_ewarm.c文件中添加兩處代碼。編譯、運行即可。


          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();