0 前言

本期的实验目的为:使用核心板上的SCI串口通信功能,在电脑端上位机,输入数字0,1,2,3,4,分别控制五个LED亮灭。

1 DSP代码

注意:查看代码时双击点进去看,否则会内容不全)。

main.c

/***  *********************************************************************************************  @file                 main.c*  @file                 SK Electronics*  @version           V1.0*  @date               2020-xx-xx*  @brief               SCI串口通信中断接发测试*  ********************************************************************************************  @attention*  实验平台:SK-F28335Mini   核心板*  CSDN博客:https://blog.csdn.net/weixin_46556696*  淘宝:https://shop409670932.taobao.com*/#include "DSP28x_Project.h"
#include "bsp_sci.h"
#include "bsp_led.h"
#define FLASH_RUN 1
#define SRAM_RUN 2
#define RUN_TYPE FLASH_RUN
#if RUN_TYPE==FLASH_RUN
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
#endif
unsigned char i=0;
Uint16 ReceivedChar;  //变量定义
char *msg;            //指针
interrupt void scia_Tx_isr(void);
interrupt void scia_Rx_isr(void);void delay_1ms(Uint16 t);
/***  @brief                           主函数*  @parameter                  无*  @return_value               无*/
void main(void)
{/*第一步:初始化系统控制:*/InitSysCtrl();/*第二步:初始化GPIO口*/InitGpio();/* 第三步:清除所有中断 和初始化 PIE 向量表:*/DINT;// 关闭全局中断InitPieCtrl();// 初始化 PIE 控制寄存器到默认状态,默认状态是全部 PIE 中断被禁用和标志位被清除IER = 0x0000;// 禁用 CPU 中断和清除所有 CPU 中断标志位:IFR = 0x0000;InitPieVectTable();// 初始化 PIE 中断向量表// 中断重映射,注册中断程序入口(用户按需求添加)EALLOW;PieVectTable.SCITXINTA=&scia_Tx_isr;PieVectTable.SCIRXINTA=&scia_Rx_isr;EDIS;///*程序烧录入28335(可选的)*/
#if RUN_TYPE==FLASH_RUNMemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);InitFlash();
#endif/* 第四步: 初始化片上外设*/// InitPeripherals();  //初始化所有外设(本例程不需要)Sci_Init();//初始化和配置SCIA串口通信/* 第五步:添加用户功能具体代码*/LED_GPIO_Config();//配置LED端口EINT;ERTM;msg = "\r\n\n\nHello SK Electronics!\0";  //发送语句scia_msg(msg);                    //发送函数msg = "\r\n更详细的DSP基础教程,请关注支持本人博客哈!\0";  //发送语句scia_msg(msg);                    //发送函数msg = "\r\nCSDN博客:https://blog.csdn.net/weixin_46556696\0";  //发送语句scia_msg(msg);                    //发送函数msg = "\r\n淘宝店铺:https://shop409670932.taobao.com\0";  //发送语句scia_msg(msg);                    //发送函数msg = "\r\n\n\n这是一个串口中断接收回显实验 \n\0"; //发送语句scia_msg(msg);msg = "\r\n\r\n请在串口调试助手输入单字符:\n\0"; //发送语句scia_msg(msg);                      //发送函数/*第六步:进入主循环*/for(;;){}
}/***  @brief                           1ms延迟函数*  @parameter                  t*  @return_value               无*/
void delay_1ms(Uint16 t)
{while(t--){DELAY_US(1000);}
}interrupt void scia_Tx_isr()
{PieCtrlRegs.PIEACK.all=M_INT9;
}interrupt void scia_Rx_isr()
{// while(SciaRegs.SCIRXST.bit.RXRDY !=1) { } //等待从上位机收到数据PieCtrlRegs.PIEACK.all=M_INT9;ReceivedChar = SciaRegs.SCIRXBUF.all;//把接收BUF里的数据赋值给ReceivedCharmsg = "  已发送: \0";             //发送语句scia_msg(msg);                      //发送函数scia_xmit(ReceivedChar);            //发送ReceivedCharmsg = "\r\n\r\n请在串口调试助手输入单字符:\n\0"; //发送语句scia_msg(msg);                      //发送函数/*根据接收到0~4控制对应LED灯*/switch(ReceivedChar){case '0': LED0_TOGGLE;break;case '1': LED1_TOGGLE;break;case '2': LED2_TOGGLE;break;case '3': LED3_TOGGLE;break;case '4': LED4_TOGGLE;break;default:break;}
}

bsp_led.h

/***  *********************************************************************************************  @file                 bsp_led.h*  @file                 SK Electronics*  @version           V1.0*  @date               2020-xx-xx*  @brief               LED应用函数接口头文件*  ********************************************************************************************  @attention*  实验平台:SK-F28335Mini   核心板*  CSDN博客:https://blog.csdn.net/weixin_46556696*  淘宝:https://shop409670932.taobao.com*/#ifndef _BSP_LED_H_
#define _BSP_LED_H_
#include "DSP28x_Project.h"/* 宏带参,可以像内联函数一样使用,低电平亮灯*/
#define LED0(a) if (a)  \GpioDataRegs. GPACLEAR.bit.GPIO0=1;\else        \GpioDataRegs. GPASET.bit.GPIO0=1#define LED1(a) if (a)  \GpioDataRegs. GPACLEAR.bit.GPIO1=1;\else        \GpioDataRegs. GPASET.bit.GPIO1=1#define LED2(a) if (a)  \GpioDataRegs. GPACLEAR.bit.GPIO2=1;\else        \GpioDataRegs. GPASET.bit.GPIO2=1#define LED3(a) if (a)  \GpioDataRegs. GPACLEAR.bit.GPIO3=1;\else        \GpioDataRegs. GPASET.bit.GPIO3=1#define LED4(a) if (a)  \GpioDataRegs. GPACLEAR.bit.GPIO4=1;\else        \GpioDataRegs. GPASET.bit.GPIO4=1/*定义IO口的宏*/
#define LED0_TOGGLE     GpioDataRegs. GPATOGGLE.bit.GPIO0=1
#define LED0_OFF        GpioDataRegs. GPASET.bit.GPIO0=1
#define LED0_ON         GpioDataRegs. GPACLEAR.bit.GPIO0=1#define LED1_TOGGLE     GpioDataRegs. GPATOGGLE.bit.GPIO1=1
#define LED1_OFF        GpioDataRegs. GPASET.bit.GPIO1=1
#define LED1_ON         GpioDataRegs. GPACLEAR.bit.GPIO1=1#define LED2_TOGGLE     GpioDataRegs. GPATOGGLE.bit.GPIO2=1
#define LED2_OFF        GpioDataRegs. GPASET.bit.GPIO2=1
#define LED2_ON         GpioDataRegs. GPACLEAR.bit.GPIO2=1#define LED3_TOGGLE     GpioDataRegs. GPATOGGLE.bit.GPIO3=1
#define LED3_OFF        GpioDataRegs. GPASET.bit.GPIO3=1
#define LED3_ON         GpioDataRegs. GPACLEAR.bit.GPIO3=1#define LED4_TOGGLE     GpioDataRegs. GPATOGGLE.bit.GPIO4=1
#define LED4_OFF        GpioDataRegs. GPASET.bit.GPIO4=1
#define LED4_ON         GpioDataRegs. GPACLEAR.bit.GPIO4=1void LED_GPIO_Config(void);
#endif /*_BSP_LED_H_ */

bsp_led.c

/***  *********************************************************************************************  @file                 bsp_led.c*  @file                 SK Electronics*  @version           V1.0*  @date               2020-xx-xx*  @brief               LED应用函数接口*  ********************************************************************************************  @attention*  实验平台:SK-F28335Mini   核心板*  CSDN博客:https://blog.csdn.net/weixin_46556696*  淘宝:https://shop409670932.taobao.com*/
#include "bsp_led.h"
void LED_GPIO_Config(void)
{EALLOW;GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;//普通IO模式GpioCtrlRegs.GPAPUD.bit.GPIO0=0;//使能内部上拉GpioCtrlRegs.GPADIR.bit.GPIO0=1;//配置成输出GpioCtrlRegs.GPAMUX1.bit.GPIO1=0;//普通IO模式GpioCtrlRegs.GPAPUD.bit.GPIO1=0;//使能内部上拉GpioCtrlRegs.GPADIR.bit.GPIO1=1;//配置成输出GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;//普通IO模式GpioCtrlRegs.GPAPUD.bit.GPIO2=0;//使能内部上拉GpioCtrlRegs.GPADIR.bit.GPIO2=1;//配置成输出GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;//普通IO模式GpioCtrlRegs.GPAPUD.bit.GPIO3=0;//使能内部上拉GpioCtrlRegs.GPADIR.bit.GPIO3=1;//配置成输出GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;//普通IO模式GpioCtrlRegs.GPAPUD.bit.GPIO4=0;//使能内部上拉GpioCtrlRegs.GPADIR.bit.GPIO4=1;//配置成输出GpioDataRegs. GPASET.bit.GPIO0=1;GpioDataRegs. GPASET.bit.GPIO1=1;GpioDataRegs. GPASET.bit.GPIO2=1;GpioDataRegs. GPASET.bit.GPIO3=1;GpioDataRegs. GPASET.bit.GPIO4=1;EDIS;
}

bsp_sci.h

/***  *********************************************************************************************  @file                 bsp_sci.h*  @file                 SK Electronics*  @version           V1.0*  @date               2020-xx-xx*  @brief               串口通信函数接口头文件*  ********************************************************************************************  @attention*  实验平台:SK-F28335Mini   核心板*  CSDN博客:https://blog.csdn.net/weixin_46556696*  淘宝:https://shop409670932.taobao.com*/#ifndef _BSP_SCI_H_
#define _BSP_SCI_H_
#include "DSP28x_Project.h"void Sci_Init(void);
void scia_xmit(int a);//发送字节的函数
void scia_msg(char * msg);//发送数组的函数
#endif /*_BSP_SCI_H_ */

bsp_sci.c

/***  *********************************************************************************************  @file                 bsp_sci.c*  @file                 SK Electronics*  @version           V1.0*  @date               2020-xx-xx*  @brief               串口通信应用函数接口*  ********************************************************************************************  @attention*  实验平台:SK-F28335Mini   核心板*  CSDN博客:https://blog.csdn.net/weixin_46556696*  淘宝:https://shop409670932.taobao.com*/
#include "bsp_sci.h"
/***  @brief                   初始化SCI串口配置*  @parameter                  无*  @return_value               无*/
void Sci_Init(void)
{//SCI的工作模式和参数需要用户在后面的学习中,深入的了解一个寄存器底层相关的资料了,多看看芯片手册和寄存器的意思。//因为28335的寄存器太多了,所以在以后的学习过程中,就不会对寄存器进行详细的注释了。InitSciaGpio();SciaRegs.SCICCR.all=0x07;// 1 stop bit,  No loopback// No parity,8 char bits// async mode, idle-line protocolSciaRegs.SCICTL1.all=0x03;// enable TX, RX, internal SCICLK,#if(CPU_FRQ_150MHZ)SciaRegs.SCIHBAUD=0x0001;// 9600 baud @LSPCLK = 37.5MHz.SciaRegs.SCILBAUD=0x00E7;#endif#if(CPU_FRQ_100MHZ)SciaRegs.SCIHBAUD=0x0001;// 9600 baud @LSPCLK = 20MHz.SciaRegs.SCILBAUD=0x0044;#endifSciaRegs.SCICTL2.bit.RXBKINTENA=1;SciaRegs.SCICTL2.bit.TXINTENA=1;//SciaRegs.SCICCR.bit.LOOPBKENA=1;SciaRegs.SCICTL1.bit.SWRESET=1;PieCtrlRegs.PIECTRL.bit.ENPIE=1;IER|=M_INT9;PieCtrlRegs.PIEIER9.bit.INTx1=1;PieCtrlRegs.PIEIER9.bit.INTx2=1;}void scia_xmit(int a)//发送字节的函数
{while (SciaRegs.SCICTL2.bit.TXRDY == 0) {}SciaRegs.SCITXBUF=a;}void scia_msg(char * msg)//发送数组的函数
{int i;i = 0;SciaRegs.SCICTL2.bit.TXINTENA=0;while(msg[i] != '\0'){scia_xmit(msg[i]);i++;}SciaRegs.SCICTL2.bit.TXINTENA=1;
}

2 结论

通过此例程,上位机发送单字符的数字 0,1,2,3,4 可以分别控制对应LED状态反转。大家可以尝试一下!
更详细的讲解请关注公众号:电力电子学社

QQ群:945257491 一起讨论!

(四)DSP28335基础教程——SCI串口通信实验(上位机收发显示)相关推荐

  1. 单片机实验八 RS232串口通信实验(接收与发送)

    实验八 RS232串口通信实验(接收与发送) 一.实验目的 1.熟悉实验软件和硬件,进行正确的接线: 2.通过实验了解串口的基本原理及使用,理解并掌握对串口进行初始化: 3.使用串口调试助手做为上位机 ...

  2. 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验

    一.介绍 对于树莓派 3B+来说,他的UART功能有三种: 1.内部蓝牙使用: 2.控制终端使用: 3.与其他设备进行串口通信. 在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树 ...

  3. 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  4. 【STM32】标准库与HAL库对照学习教程八--串口通信详解

    [STM32]标准库与HAL库对照学习教程八--串口通信详解 一.前言 二.准备工作 三.通信的基本概念 1.通信方式 2.串行通信与并行通信 (1)串行通信 (2)并行通信 3.异步通信与同步通信 ...

  5. 基于FPGA的UART串口通信实验(VHDL语言实现)

    一.前言: 最近在做UART串口通信的相关实验时,在网上查了很多资料,发现网上的大部分文章只注重理论,不注重代码,很多代码有错误不说,而且难以理解.故在完成此实验后,起了写一篇博客的心思,以供有想做相 ...

  6. 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  7. 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  8. 嵌入式系统 实验二 串口通信实验

    实验二 串口通信实验 一.实验目的 1.)了解 USART 的基本特性: 2.)掌握用库函数操作 USART 的方法: 3.)掌握如何使用 STM32 的串口发送和接收数据. 二.实验环境 1.)硬件 ...

  9. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)

    USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...

最新文章

  1. 爱奇艺效果广告的个性化探索与实践
  2. 电子科技大学计算机学院保研夏令营,电子科技大学计算机科学与工程学院网络空间安全保研夏令营...
  3. C#让两个长度相同的数组一一对应
  4. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述
  5. POJ2446 模板盖格子 简单二分匹配
  6. 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
  7. 程序人生:给年轻程序员关于开发过程的10条忠告
  8. java购物车商品排序_Java购物车
  9. Markdown: Basics (快速入门)
  10. MCU破解技术分析(一)
  11. 欧几里得的尺规(三等分一个线段)
  12. Java Scheduler ScheduledExecutorService ScheduledThreadPoolExecutor示例
  13. 洛谷P3378 【模板】堆
  14. Oculus消费者版在路上,留给“山寨”VR的时间有多少?
  15. [下载]最新QQ空间牧场开通器 V2.0
  16. java银行收费系统界面程序_基于jsp的物业收费管理系统-JavaEE实现物业收费管理系统 - java项目源码...
  17. 51单片机汇编语言例子,涵盖数码管显示,流水灯,串口,外拓,电子钟,频率计,DA、AD转换等实例
  18. 向日葵远程控制软件。
  19. 【测试】嵌入式软件测试VS一般软件测试
  20. 思考-IT行业设备分销代理商的运营模式

热门文章

  1. 新网 php泛域名,如何设置泛域名解析?
  2. Vue props中Object和Array设置默认值
  3. 2017河南工业大学校赛 D rqy的键盘
  4. 操作系统—概念与定义
  5. 5G下行理论峰值速率该如何计算?
  6. 2021 WIDC信息安全挑战赛预赛回顾与OBD-II标准阅读
  7. Server 2019 Multi-Path(MPIO)Multi-LUN
  8. Python--爬虫--XPath入门
  9. 去掉屏底部三个虚拟按键 ,默认手势导航,去掉手势导航的底部横线。
  10. CSS3transform属性详解