⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com		  
**
**--------------File Info---------------------------------------------------------------------------------
** File Name:               uart_send.c	   
** Last modified Date:      2007.12.24 
** Last Version:            v1.1	  
** Description:             Stellaris系列单片机UART发送程序
** 	    		            UART发送数据最好采用中断方式以便系统去做其它工作.	  
**--------------------------------------------------------------------------------------------------------
** Created By:              Ni Likao	   
** Created date:            2007.09.17    
** Version:                 v1.0	  
** Descriptions:            开发板上LED灯的闪烁表示数据正在被发送.	 
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             Kang qinhua
** Modified date:           2008.01.12
** Version:                 v1.1
** Description:
**
*********************************************************************************************************/

#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "gpio.h"
#include "interrupt.h"
#include "sysctl.h"
#include "uart.h"

#define  TXD_LED  GPIO_PIN_6
#define  UART0_PIN GPIO_PIN_0 | GPIO_PIN_1

static volatile const unsigned char *g_pucBuffer = 0;                   /*  发送数据缓冲区指针          */
static volatile unsigned long       g_ulCount = 0;                      /*  发送数据个数                */

static const unsigned char          g_pucString[] = "welcome to http://www.zlgmcu.com\r\n";

/*********************************************************************************************************
** Function name:           UART0_ISR
** Descriptions:            UART0中断服务函数,工作在串口发送中断下.
**                          用KEIL软件时,在Startup.S中添加该中断函数名
** input parameters:        无
** output parameters:       无
** Returned value:          无
** Created By:              Ni Likao
** Created date:            2007.09.17
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:                    
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/

void UART0_ISR (void)                                                   
{
    unsigned long ulStatus;
    
    ulStatus = UARTIntStatus(UART0_BASE, true);                         /*  获得中断状态                */
    UARTIntClear(UART0_BASE, ulStatus);                                 /*  清除等待响应的中断          */
    if (ulStatus & UART_INT_TX) {                                       /*  检查是否有未响应的传输中断  */   
        while (g_ulCount && UARTSpaceAvail(UART0_BASE)) { 	            /*  处理传输中断                */  		
            UARTCharNonBlockingPut(UART0_BASE, *g_pucBuffer++);         /*  发送下一个字符              */
            g_ulCount--;                                                /*  发送字符数自减              */
        }
    }
}

/**********************************************************************************************************
** Function name:           UARTSend
** Descriptions:            发送数据处理函数,用于串口数据发送.
**                          用KEIL软件时,在Startup.S中添加该中断函数名
** input parameters:        *pucBuffer,ulCount
** output parameters:       无
** Returned value:          无
** Created By:              Ni Likao
** Created date:            2007.09.17
**--------------------------------------------------------------------------------------------------------
** Modified by:            
** Modified date:                  
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/

void UARTSend (const unsigned char  *pucBuffer, unsigned long  ulCount)    
{   
    while (g_ulCount) {                                                 /*  等待直到之前的字符串发送完毕*/
        ;
    }                                                  
    g_pucBuffer = pucBuffer;                                            /*  保存待传输的数据缓冲        */
    g_ulCount = ulCount;                                                /*  保存计数值                  */
    while (UARTSpaceAvail(UART0_BASE)) {                                /*  处理传输中断                */    
        UARTCharNonBlockingPut(UART0_BASE, *g_pucBuffer++);             /*  发送下一个字符              */
        g_ulCount--;                                                    /*  发送字符数自减              */
    }
}

/*********************************************************************************************************
** Function name:           main	   
** Descriptions:            该范例程序演示了串口发送程序,数据通过串口从单片机向上位机发送数据.                      
**                          UART将被配置为 9600波特率,8-n-1模式持续发送数据。开发板上LED灯的
**                          闪烁表示数据正在被发送.
** input parameters:        无
** output parameters:       无      
** Returned value:          无	 
** Created By:              Ni Likao
** Created date:            2007.09.17
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:                   
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main (void)
{  
    
    SysCtlClockSet(SYSCTL_SYSDIV_16 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_6MHZ);                                   /*  设置晶振为时钟源            */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);                        /*  使能UART外设                */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                        /*  使能GPIOA外设               */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);                        /*  使能GPIOB外设               */

    IntMasterEnable();                                                  /*  开总中断                    */
	GPIOPinTypeUART(GPIO_PORTA_BASE, UART0_PIN);                        /*  配置UART功能脚              */
                                                                        /*  设置GPIO的A0和A1为UART引脚  */
                                                                        /*  (A0->RXD,A1->TXD)           */
    GPIODirModeSet(GPIO_PORTB_BASE, TXD_LED,                           
                   GPIO_DIR_MODE_OUT);                                  /*  设置 GPIO B0和B1为输出口    */
    GPIOPadConfigSet(GPIO_PORTB_BASE, TXD_LED, GPIO_STRENGTH_2MA,
	             GPIO_PIN_TYPE_STD);				                    /*  配置PB6口为2ma驱动电流      */
					                                                    /*  及PULL-PUSH类型		*/
    GPIOPinWrite(GPIO_PORTB_BASE, TXD_LED, 0);                          /*  初始化IO口                  */

    UARTConfigSet(UART0_BASE, 9600, (UART_CONFIG_WLEN_8 |
                                     UART_CONFIG_STOP_ONE |
                                     UART_CONFIG_PAR_NONE));            /*  配置UART 为 9600波特率      */
    UARTIntClear(UART0_BASE, UART_INT_TX);                              /*  8-N-1模式发送数据           */                                                                        
    UARTIntEnable(UART0_BASE, UART_INT_TX);                             /*  设置UART中断类型            */
    IntEnable(INT_UART0);                                               /*  UART中断使能                */
    while(1) {      
        UARTSend(g_pucString, sizeof(g_pucString) - 1);                 /*  向UART发送一个字符串        */         
        GPIOPinWrite(GPIO_PORTB_BASE, TXD_LED,
                     GPIOPinRead(GPIO_PORTB_BASE, TXD_LED) ^ TXD_LED);  /*  翻转GPIO B4 端口            */   
    }
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -