+USART串口调试程序
时间:10-02
整理:3721RD
点击:
各位中秋节快乐,今天没过节在实验室做看6748的串口程序,发完这篇就过节去了。
根据昨天发的项目计划,今天开始第一步串口的发送数据的调试。
串口通信这里接不介绍了,今天主要使用创龙光盘里的两个程序来进行串口调试实验。
一、USART直接发送数据
这个程序我们使用的程序是
创龙DSP光盘\TL6748-EVM-data\demo\StarterWare\Application\UART1_POLL
这个程序并通过普通的方式发送数据。不过在这里要注意的是创龙的开发板上只提供了UART0和UART2两个接口,所以我们要使用UART1时必须要单独接线。UATR接口需要用四个线,分别是V+、RXD、TXD、GND。我们根据底板原理图,找到UART1的引脚。
J2接口的16/18引脚分别是UART1_RXD和UART1_TXD。同时14和20引脚可以用作GND。3.3V的高电平在J3接口的18和20引脚。将这四个引脚连接到MAX3232串口通信模块上。通过窗口转USB线连接电脑。
电气连接如图所示
程序执行流程为:
1、使能UART1模块;
2、GPIO管脚配置;
3、配置UART1 参数:波特率 115200 数据位 8 停止位 1 无校验位;4、使能UART1;
5、发送与接收数据;
接收数据用到的函数为:Receive=UARTCharGet();
发送数据用到的函数为:UARTCharPut();
打开串口调试助手,选择串口号(右击我的电脑->设备管理器查看)。波特率选择115200。校验位N,数据位8,停止位1。打开。
打开工程UART1_POLL,Build->Bebug->导入GEL初始化->执行。串口调试助手接收到数据。
串口程序调试成功。
二、通过中断调试UART程序。
这个程序我们使用的程序是
E:\创龙DSP\TL6748-EVM-data\demo\StarterWare\Application\UART0_INT
这个程序是通过中断来实现串口发送数据的
这个程序使用的是UART2。所以我们可以直接使用开发板上的串口。
电气连接如下
调试运行程序,可以得到和前面一样的现象。
三、为项目改进串口程序。
为了方便项目使用,我采用UART0通过普通模式串口输出程序。我以UART1_POLL为基础,首先更改初始化设置,改成UART0使能。
为了方便输出,我编写了一个uart_printf()函数。下次串口输出时可以直接调用此函数,方便开发。
- void uart_printf(char *p)
- {
- while((*p)!='\0')
- {
- UARTCharPut(SOC_UART_0_REGS, *p);
- p++;
- }
- }
同时加入了延时函数,可以实现定时输出数据到电脑。
最后加入循环语句,保证程序在运行时不断发送数据。
最后运行结果如下。
最后给大家献上我的程序代码,挺简单,和大家分享。
- /* */
- /* 函数声明 */
- /* */
- // 外设使能配置
- void PSCInit(void);
- // GPIO 管脚复用配置
- void GPIOBankPinMuxSet();
- // GPIO 管脚初始化
- void GPIOBankPinInit();
- // UART 初始化
- void UARTInit(void);
- // 串口输出
- void uart_printf(char *p);
- // 延时
- void Delay(unsigned int n);
- /* */
- /* 主函数 */
- /* */
- int main(void)
- {
- // 外设使能配置
- PSCInit();
-
- // GPIO 管脚复用配置
- GPIOBankPinMuxSet();
- // UART 初始化
- UARTInit();
- // 发送字符串
- while(1)
- {
- uart_printf("为了部落!");
- uart_printf("\n");
- Delay(0x00FFFFFF);
- uart_printf("为了地狱咆哮!");
- uart_printf("\n");
- Delay(0x00FFFFFF);
- uart_printf("为了联盟!");
- uart_printf("\n");
- Delay(0x00FFFFFF);
- uart_printf("愿圣光庇护你!");
- uart_printf("\n");
- Delay(0x00FFFFFF);
- uart_printf("\n");
- }
- }
- /****************************************************************************/
- /* */
- /* PSC 初始化 */
- /* */
- /****************************************************************************/
- void PSCInit(void)
- {
- // 对相应外设模块的使能也可以在 BootLoader 中完成
- // 使能 UART0 模块
- PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
- }
- /****************************************************************************/
- /* */
- /* GPIO 管脚复用配置 */
- /* */
- /****************************************************************************/
- void GPIOBankPinMuxSet(void)
- {
- // 使能 UART0 禁用流控
- UARTPinMuxSetup(0, FALSE);
- }
- /****************************************************************************/
- /* */
- /* UART 初始化 */
- /* */
- /****************************************************************************/
- void UARTInit(void)
- {
- // 配置 UART0 参数
- // 波特率 115200 数据位 8 停止位 1 无校验位
- UARTConfigSetExpClk(SOC_UART_0_REGS, UART_0_FREQ, BAUD_115200, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
- // 使能 UART0
- UARTEnable(SOC_UART_0_REGS);
- }
- /****************************************************************************/
- /* */
- /* 串口输出 */
- /* */
- /****************************************************************************/
- void uart_printf(char *p)
- {
- while((*p)!='\0')
- {
- UARTCharPut(SOC_UART_0_REGS, *p);
- p++;
- }
- }
- /****************************************************************************/
- /* */
- /* 延时 */
- /* */
- /****************************************************************************/
- void Delay(unsigned int n)
- {
- unsigned int i;
- for(i=n;i>0;i--);
- }
最近在关注这个板子,我想申请一直申请不到,小编可以把资料发给我看看吗?邮箱710556623@qq.com