这是我的程序:
#include"stdio.h"
#include<stdint.h>
#include<stdbool.h>
#include "inc/tm4c1233e6pm.h"//这个是我得芯片型号
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/pwm.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/pin_map.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
//********************UART_GPIO初始化************************
void UART0_init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); //复用功能时钟
GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1); //配置PAO、PA1为UART1 的 RXD0,TXD0,
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
//配置PA0 PA1为串口引脚
UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(), 9600,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
IntMasterEnable(); //全局中断使能
IntEnable(INT_UART0); //使能串口0中断
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT); //使能串口0接收中断和接收超时中断
UARTEnable(UART0_BASE); //使能串口1(UARTO)发送和接收
}
//*****************UART中断处理*****************************
void UART0_Handler(void)
{
uint32_t ITStatus;
ITStatus = UARTIntStatus(UART0_BASE, true); //中断标志位
UARTIntClear(UART0_BASE, ITStatus); //清除中断标志
while(UARTCharsAvail(UART0_BASE)) //确认接收 FIFO 中是否有数据
{
UARTCharPutNonBlocking(UART0_BASE,UARTCharGetNonBlocking(UART0_BASE));
}
}
//*****************主函数调用*****************************
void main ()
{
UART0_init();
while(1);
}
请问我得这个程序有问题吗?请教高手指教;
板子是我们自己做的,但是我都试了好几块了 ,
我是吧程序放到板子里,找了根DB9串口线连接 电脑和板子的 ,
原理图连接:板子上 芯片 管脚PA0和PA1 分别对应的RX 和TX,出来后接了个MAX3221cpw的Rout和Din,然后 我找了三根线 接在了MAX3221CPW的DOUT和Rin上,还有个GND 然后接到电脑上的;如图下:
,tx和rx我反复尝试过好几种接法,以防止接错线,结果每一种情况 都没用 ,都不能成功收数据
最后 我是用串口调试助手忘串口发数据,能发收不回来,,,还是就是 我吧图中的右边椭圆红色圈里面的2和3号口短接,打开调试助手就能发送和接受数据,至少说明 我电脑的串口和串口线是好的吧 现在的问题应该就在板子上了,一方面是不是程序的问题这个是我很关心的,硬件的可能性。我用的 是TM4C1233E6PM,用ccs编译的通过JATG下载程序。请教高手,我把 那个例程刷进去也没什么反应,而且我看网上有不少同志也反映说,不管怎么弄就是串口没反应,不知道为什么,请高手指教,
|