一、开发环境及工具

  1. HC32F003 / HC32F005
  2. Keil uVision5 V5.33 / IAR For ARM 7.80.4 (J-Link)
  3. 此工程源码下载路径 : https://gitee.com/amx/hc32ddl-app

二、串口模式的选择

  1. 我们选择Mode1,异步全双工:波特率:19200, 数据位:8, 校验位:None, 停止位:1, 流控:None

  2. 选择UART1作为通信口,同时需开启TIMER1用于产生波特率

  3. 为减少数据通讯出错概率,还需要提高系统时钟到24MHz(有时需要支持115200波特率)


三、代码实现

  1. 串口引脚配置,这里使用UART1的P35和P36引脚

    static void App_UartPortInit(void)
    {stc_gpio_cfg_t stcGpioCfg;DDL_ZERO_STRUCT(stcGpioCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟///<TXstcGpioCfg.enDir = GpioDirOut;Gpio_Init(UART_TX_PORT, UART_TX_PIN, &stcGpioCfg);Gpio_SetAfMode(UART_TX_PORT, UART_TX_PIN, GpioAf1);          //配置P35 端口为URART1_TX///<RXstcGpioCfg.enDir = GpioDirIn;Gpio_Init(UART_RX_PORT, UART_RX_PIN, &stcGpioCfg);Gpio_SetAfMode(UART_RX_PORT, UART_RX_PIN, GpioAf1);          //配置P36 端口为URART1_RX
    }
    
  2. 串口初始化设置(波特率:19200, 数据位:8, 校验位:None, 停止位:1, 流控:None)

    static void App_UartInit(void)
    {uint16_t timer=0;stc_uart_baud_cfg_t stcBaud;stc_bt_cfg_t stcBtCfg;stc_uart_cfg_t  stcCfg;DDL_ZERO_STRUCT(stcBaud);DDL_ZERO_STRUCT(stcBtCfg);//外设时钟使能Sysctrl_SetPeripheralGate(SysctrlPeripheralBt,TRUE);//模式0/2可以不使能Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);stcBaud.bDbaud  = 0u;//双倍波特率功能stcBaud.u32Baud = 19200u;//更新波特率位置stcBaud.enMode  = UartMode1; //计算波特率需要模式参数stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); //获取PCLKtimer = Uart_SetBaudRate(M0P_UART1, &stcBaud);stcBtCfg.enMD = BtMode2;stcBtCfg.enCT = BtTimer;Bt_Init(TIM1, &stcBtCfg);//调用basetimer1设置函数产生波特率Bt_ARRSet(TIM1,timer);Bt_Cnt16Set(TIM1,timer);Bt_Run(TIM1);stcCfg.enRunMode = UartMode1;//测试项,更改此处来转换4种模式测试Uart_Init(M0P_UART1, &stcCfg);///< UART中断配置Uart_EnableIrq(M0P_UART1, UartRxIrq);Uart_ClrStatus(M0P_UART1, UartRC);EnableNvic(UART1_IRQn, IrqLevel2, TRUE);
    }
    

四、添加Amxlink协议及测试

  1. 有关于Amxlink协议请查看文章《Amxlink通信协议-简介》

  2. 主函数实现(源码链接: https://gitee.com/amx/hc32ddl-app)

    int32_t main(void)
    {SystemInit();      // 系统时钟设置App_BtTimerTest(); // 基本定时器0Api_Init();            // Amxlink串口数据缓存hc_uart_init();     // UART1初始化while (1){Api_Poll_Parse(); // Amxlink协议解析}
    }
    
  3. 通过串口工具发送数据到MCU,MCU返回接收到的数据

  1. IAR仿真截图

华大HC32-(03)-串口UART通信相关推荐

  1. 树莓派4B ubuntu20.04 UART 多串口配置通信

    相比树莓派0.1.2 以及 3 的双串口 UART0(PL011)和 UART1(mini UART),树莓派 4 中新增了 4 个 PL011 串口共计有 6 个 UART,整理此笔记用作记录和配置 ...

  2. 华大单片机 HC32F460 串口调试

    华大单片机 HC32F460 串口调试 吐槽下,华大官方例程写到太复杂了,不熟练的一时摸不上手. #include "drvs.h" /********************** ...

  3. <Linux开发> linux应用开发-之-uart通信开发例程

    一.简介 串口全称叫做串行接口,串行接口指的是数据一个一个的按顺序传输,通信线路简单.使用两条线即可. 实现双向通信,一条用于发送,一条用于接收.串口通信距离远,但是速度相对会低,串口是一种很常用的工 ...

  4. FPGA基础知识极简教程(6)UART通信与移位寄存器的应用

    博文目录 写在前面 正文 关于UART的介绍 UART通信过程 UART.RS232以及TTL之间的关系 UART的使用场合 有关UART的总结 调试UART的技巧 UART的Verilog实现 波特 ...

  5. micropython stm32f030_STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单

    1.从 GPIO 到 UART 前面几节我们讲了MCU如何启动,如何用翻转IO引脚,以及用按键去触发中断.接下来我们介绍的也是最常用的一个模块,串口(UART). 串口可以说是最古老,而且生命力最强的 ...

  6. 基于Lua脚本语言的嵌入式UART通信的实现

    随着变电站智能化程度的逐步提高,对温度.湿度等现场状态参量的采集需求也越来越多.就目前而言,在现场应用中,此类设备多采用RS232或RS485等UART串行通信方式和IED(Intelligent E ...

  7. MSP430F5529 DriverLib 库函数学习笔记(四)UART通信

    目录 硬知识 USCI通信模块 USCI的UART模式 1. USCI初始化和复位 2. 异步通信字符格式 3. 异步多机通信模式 4. 自动波特率检测 5. IrDA编码和解码 6. 自动错误检测 ...

  8. 串口UART串行总线协议

    串口UART 串行端口是异步的(不传输时钟相关数据),两个设备在使用串口通信时,必须先约定一个数据传输速率,并且这两个设备各自的时钟频率必须与这个速率保持相近,某一方的时钟频率相差很大都会导致数据传输 ...

  9. Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

最新文章

  1. 2016 多校赛3 A 水 B 期望,规律 C 各种博弈 J 物理题,积分 K 暴力,水
  2. Mybatis打印调试sql的两种方式
  3. C#中将字符串内容换行写入到txt文件中
  4. 快速重置vuex数据 - Vue
  5. 52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)
  6. ruby打印_Ruby程序打印数字的力量
  7. 干活的不如写ppt的吗_干活的干不过写PPT的?或许只是工作汇报的方式错了……...
  8. 基于JAVA+Servlet+JSP+MYSQL的学生选课系统
  9. bzoj4820[SDOI2017]硬币游戏
  10. JS 中 Date() 的其他操作集锦
  11. .net java xml_java.net.MalformedURLException – 在通过StAX解析XML文件时
  12. winform窗体——布局方式
  13. 县级智慧城市建设方案_智慧城市建设项目实施方案
  14. 『论文复现系列』3.Glove
  15. 又一个程序员“倒”下,Pandownload凉了...
  16. MLT教程:从BXL文件导入Altium Designer原理图封装和PCB封装
  17. 最受程序员欢迎的图书推荐
  18. 在Linux中Realplay 10.0 的安装和使用(转)
  19. 内存测试拷机软件,电脑烤机软件大集合
  20. 澳门移植“城市大脑”,阿里云提供全套AI解决方案

热门文章

  1. Linux网络编程,bind:error:Cannot assign requested address,Ubuntu网络桥接
  2. 扫地机器人路径规划算法解读
  3. 数据流图和数据流程图的区别
  4. 泰坦号潜艇事故给软件工程师的启示
  5. EntityFramework之孩子删除(四)(你以为你真的懂了?)
  6. clearInterval() 函数详解
  7. 计算机基础设计的毕业论文图形,简单几何图形的识别和编辑 毕业论文 计算机应用基础.doc...
  8. P2P技术详解(四):P2P技术之STUN、TURN、ICE详解
  9. The Things Network LoRaWAN Stack V3 学习笔记 2.1.2 客户端导入自签名 CA 证书
  10. Java使用executeUpdate()导致程序异常