各位工程师帮忙啊!一个485发送数据的程序折磨几天了,都不见发出数据。前辈提点意见吧<br /><br />#include "hw_ints.h"<br />#include "hw_memmap.h"<br />#include "hw_types.h"<br />#include "gpio.h"<br />#include "interrupt.h"<br />#include "sysctl.h"<br />#include "uart.h"<br /><br />#define RE_DE GPIO_PIN_7<br />#define UART1_PIN GPIO_PIN_2|GPIO_PIN_3<br /><br />static volatile const unsigned char *g_pucBuffer = 0; // 发送数据缓冲区指针<br />static volatile unsigned long g_ulCount = 0; // 发送数据个数<br />static const unsigned char g_pucString[] = "123456789ABCDE";<br /><br />void WaitJTAG(void)<br />{<br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);<br /> GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);<br /> if (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2) == 0X00)<br /> {<br /> for (;;);<br /> }<br /> SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOA);<br />}<br /><br />void UART1_ISR(void) // UART1中断服务函数<br />{<br /> unsigned long ulStatus;<br /> ulStatus = UARTIntStatus(UART1_BASE, true); // 获得中断状态。<br /> UARTIntClear(UART1_BASE, ulStatus); // 清除等待响应的中断。<br /> if(ulStatus & UART_INT_TX) // 检查是否有未响应的传输中断。<br /> {<br /> while(g_ulCount && UARTSpaceAvail(UART1_BASE)) // 处理传输中断。<br /> {<br /> UARTCharNonBlockingPut(UART1_BASE, *g_pucBuffer++); // 发送下一个字符。<br /> g_ulCount--; // 发送字符数自减。<br /> }<br /> }<br />}<br /><br /><br />void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount) // 发送数据处理函数<br />{ <br /> while(g_ulCount); // 等待,直到之前的字符串发送完毕。<br /> g_pucBuffer = pucBuffer; // 保存待传输的数据缓冲。<br /> g_ulCount = ulCount; // 保存计数值。<br /> while(UARTSpaceAvail(UART1_BASE)&&g_ulCount) // 处理传输中断。<br /> { <br /> UARTCharNonBlockingPut(UART1_BASE, *g_pucBuffer++); // 发送下一个字符。<br /> g_ulCount--; // 发送字符数自减。 <br /> } // 使能UART发送。<br />}<br /><br />int main(void)<br />{<br /> WaitJTAG(); <br /> SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |<br /> SYSCTL_XTAL_6MHZ); // 设置晶振为时钟源。<br /> <br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);<br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);<br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);<br /> GPIOPinTypeUART(GPIO_PORTD_BASE, UART1_PIN); // 设置PD2,PD3为RXD,TXD <br /> GPIODirModeSet(GPIO_PORTC_BASE, RE_DE, GPIO_DIR_MODE_OUT); // 设置PC7为输出<br /> GPIODirModeSet(GPIO_PORTD_BASE, UART1_PIN, GPIO_DIR_MODE_HW); // 设置PD2和PD3为UART引脚输出<br /> // (PD2->RXD,PD3->TXD) <br /> <br /> UARTConfigSet(UART1_BASE, 9600, (UART_CONFIG_WLEN_8 | // 配置UART 为 9600波特率, <br /> UART_CONFIG_STOP_ONE | // 8-N-1模式发送数据。<br /> UART_CONFIG_PAR_NONE) & 0xFFFFFFEF); <br /> IntMasterEnable(); // 使能处理器中断<br /> GPIOPinWrite(GPIO_PORTC_BASE, RE_DE, 0); // 设置PC7为低电平<br /> <br /> UARTIntEnable(UART1_BASE, UART_INT_TX); // 使能UART1发送中断<br /> IntEnable(INT_UART1);<br />// UARTEnable(UART1_BASE); <br /> GPIOPinWrite(GPIO_PORTC_BASE, RE_DE, RE_DE); // 将RS485设置为发送模式<br /> UARTSend(g_pucString, sizeof (g_pucString) - 1); // 向UART发送一个字符串。 <br />}<br /> |
|