合泰HT32F52352串口通信学习笔记
HT32F52352芯片资料
作为一个开发者,学会找 / 看芯片资料很重要!找资料最好的方法就是直接在官网找。
比如想找ht32f52352芯片的资料可以直接在合泰的官网下载。https://www.holtek.com.cn/productdetail/-/vg/HT32F52342-52
这里直接给出以下两份资料的下载地址
HT32F52342/HT32F52352开发使用手册
链接:[https://leoeinstein.lanzoux.com/iIhXgka7jkb]
开发使用手册里面具体介绍了芯片的各种功能寄存器及对应的地址。
和HT32F52342/HT32F52352产品规格书
链接:https://leoeinstein.lanzous.com/iBO77ka7jcd
产品规格书里面有一个比较重要的就是各个引脚功能的定义说明,如下图:
串口初始化及例程
串口初始化注意事项:
(1)波特率设置、串口选择(USART 0/1)、模式设置等等等等,具体可参考下面这篇博文:
一、合泰32_Onenet_WiFi模块_合泰单片机通过MQTT协议数据上云(一)
二、《stm32f103系列单片机串口初始化》
以上两篇博文都涉及到串口,特别是第一篇!!!,里面的例程可以下载来用
(2)时钟一定要初始化,记得使能时钟!!!
USART.C 文件
#include "usart.h"
#include "ht32f5xxxx_gpio.h"
#include "ht32_board.h"
#include "ht32_board_config.h"/**************************实现函数********************************************
函数说明:配置usart串口*******************************************************************************/
void USART_Configuration(void)
{USART_InitTypeDef USART_InitStructure;CKCU_PeripClockConfig_TypeDef CKCUClock= {{0}};CKCUClock.Bit.AFIO = 1;COM1_CLK(CKCUClock) = 1; //开启时钟CKCU_PeripClockConfig(CKCUClock, ENABLE);AFIO_GPxConfig(USART_GPIO_GROUP, USART_TX_PIN, AFIO_FUN_USART_UART);AFIO_GPxConfig(USART_GPIO_GROUP, USART_RX_PIN, AFIO_FUN_USART_UART);/*波特率: 115200长度: 8bits停止位: 1位校验位: 无 模式: 正常模式*/USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WORDLENGTH_8B;USART_InitStructure.USART_StopBits = USART_STOPBITS_1;USART_InitStructure.USART_Parity = USART_PARITY_NO;USART_InitStructure.USART_Mode = USART_MODE_NORMAL;USART_Init(COM1_PORT, &USART_InitStructure);// 使能 COM1_PORT 发送和接收 USART_TxCmd(COM1_PORT, ENABLE);USART_RxCmd(COM1_PORT, ENABLE);//中断设置 NVIC_EnableIRQ(COM1_IRQn);USART_IntConfig(COM1_PORT, USART_FLAG_RXDR , ENABLE);USART_IntConfig(COM1_PORT, USART_FLAG_TXDE , ENABLE);/* 设置FIFO接收等级 */USART_RXTLConfig(COM1_PORT, USART_RXTL_04);
}/**************************实现函数********************************************
函数说明:接收中断服务函数*******************************************************************************/
void COM1_IRQHandler(void)
{u8 data;if( USART_GetFlagStatus(COM1_PORT, USART_FLAG_RXDR ) ) //接收中断{data = USART_ReceiveData(COM1_PORT); //读取接收到的数据printf("data = %c\n",data); //把收到的数据发送回电脑 }
}/**************************实现函数********************************************
函数说明:FIFO*******************************************************************************/
void USART_Tx(const char* TxBuffer, u32 length)
{int i;for (i = 0; i < length; i++){while (!USART_GetFlagStatus(COM1_PORT, USART_FLAG_TXC));USART_SendData(COM1_PORT, TxBuffer[i]);}
}/**************************实现函数********************************************
函数说明:发送一个字节*******************************************************************************/
void Usart_Sendbyte(HT_USART_TypeDef* USARTx, u8 data)
{USART_SendData(USARTx, data);while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET);
}/**************************实现函数********************************************
函数说明:发送数组*******************************************************************************/
void Usart_SendArray(HT_USART_TypeDef* USARTx, u8 *array,u8 num)
{u8 i;for( i = 0;i < num;i++){Usart_Sendbyte(USARTx,*array);array++;}
}/**************************实现函数********************************************
函数说明:发送字符串*******************************************************************************/ void Usart_SendStr(HT_USART_TypeDef* USARTx, uint8_t *str)
{uint8_t i;for(i = 0;str[i] != '\0';i++){Usart_Sendbyte(USARTx,str[i]);}
}
USART.H 文件
#ifndef __USART_H
#define __USART_H
#include "ht32f5xxxx_usart.h"#define USART_GPIO_GROUP (GPIO_PA)
#define USART_TX_PIN (GPIO_PIN_4)
#define USART_RX_PIN (GPIO_PIN_5)
#define USART_AFIO_MODE (AFIO_FUN_USART_UART) //模式设置,默认模式:AFIO_MODE_DEFAULT ,AFIO_MODE_1~15对应模式1~15
#define COM1_PORT (HT_USART1)
#define COM1_IRQn (USART0_IRQn)void USART_Configuration(void);
void COM1_IRQHandler(void);
void Usart_Sendbyte(HT_USART_TypeDef* USARTx, u8 data);
void Usart_SendArray(HT_USART_TypeDef* USARTx, u8 *array,u8 num);
void Usart_SendStr(HT_USART_TypeDef* USARTx, uint8_t *str);
void USART_Tx(const char* TxBuffer, u32 length);
void USART_Rx(const char* RxBuffer, u32 length);
#endif
下面是花了10秒钟不够,写的简单的测试主函数。
usart.c里面还有特别多函数可以选择,感觉还不错,看各位自己发挥了!!!
main.c
#include "ht32.h"
#include "usart.h"int main(void)
{USART_Configuration();//串口初始化while (1){Usart_SendStr(COM1_PORT,"Hello World!");//循环发送字符串,测试用}
}
整个工程还涉及到其他合泰自带的文件,特别像我这样的初学者可能只有上面两个文件还不够,因此我把整个工程贴出来了,需要的自取,不用谢!
传送门:[https://leoeinstein.lanzous.com/iJOAhka8c1g]
合泰HT32F52352串口通信学习笔记相关推荐
- C#串口通信学习笔记
因为参加一个小项目,需要对继电器进行串口控制,所以这两天学习了基本的串口编程.同事那边有JAVA的串口通信包,不过是从网上下载的,比较零乱,难以准确掌握串口通信的流程和内含.因此,个人通过学习网上大牛 ...
- STM32F767串口通信学习笔记
STM32F767的串口使用,需要先开启串口时钟,再设置对应的IO模式,然后配置一下波特率,数据位长度,奇偶校验位信息就可以使用了. 基础知识 STM32F767IGT6 最多可提供 8 路串口,支 ...
- linux下串口通信详解,Linux操作系统下的串口通信学习笔记
http://www.diybl.com/ 2008-7-5 网络 点击: [ 评论 ] - - 文章搜索: [点击打包该文章] [本站开通在线QQ讨论群] CBAUDEX (不属于POSIX ...
- 合泰HT32 淘晶驰TJC--T0串口屏学习笔记
串口屏开发环境搭建 串口屏的优点就不用多说了,用过的老师傅都说好! 开发专用上位机软件下载:传送门主要用来设计屏幕界面的,简单方便. 1.软件安装好后点击新建工程 2.选择你需要存放的目录,输入文件名 ...
- 合泰HT32--淘晶驰TJC--T0串口屏学习笔记(二)
前言 经过上一次的串口屏学习,实现了单个页面的控件操作显示,但依旧还存在着许多需要解决的问题和优化的地方. 这次呢,主要实现串口屏多页面显示,及对应UI组件的控制. 上一篇串口屏链接:合泰HT32 & ...
- STM32 CAN总线通信学习笔记(一)
STM32 CAN总线通信学习笔记(一) 一.CAN总线简介 CAN 是控制器局域网络(Controller Area Network, CAN)的简称.CAN采用数据块编码的方式,数据块根据帧的类型 ...
- 基于STM32的CAN总线通信学习笔记
转自:https://blog.csdn.net/ludaoyi88/article/details/53350077 基于STM32的CAN总线通信学习笔记 本文主要简单介绍CAN总线的相关概念,以 ...
- CAN总线通信学习笔记
CAN总线通信学习笔记 完整笔记链接:https://mubu.com/doc/67Rn6yaozhS CAN总线笔记目录 定义 底层原理 CAN信号传输 发送 接收 CAN总线结构.特点.分类 CA ...
- 串口通信学习(GPS模块)2021.5.10
GPS串口通信学习实践 2021.5.10 1.串口通信简介 1.1 波特率 1.2 数据位 1.3 停止位 1.4 奇偶校验位 2.GPS模块串口通信配置 2.1 驱动安装 2.2 插入GPS模块 ...
最新文章
- python实现nginx图形界面管理
- (转)男人的真?。。。
- Java6程序设计基础教程_【Java】《Java程序设计基础教程》第三章学习
- 如何通过Bit-Z的场外交易购买BZ?(新手图文攻略)
- java 读取csv_Java读取CSV的常用方法 | 学步园
- android 存储方式以及路径简介
- 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.
- gpio stm8 管脚 配置工具_STM8S 外设模块的GPIO引脚应该如何配置
- Node介绍及环境配置~超级详细哦
- 可靠的Windows版Redis
- android手机 办公软件,Android手机办公软件推荐:WPS移动版(Kingsoft Office)
- endnote X7 超级初学者教程
- 什么是 Web 3.0?
- db_recovery_file_dest与log_archive_dest、log_archive_dest_n
- java中多种写文件方式的效率对比实验
- Larval安装使用Excel步骤
- 期货交易应该如何界定交易中的时间周期?
- Oracle数据库 SQL语句总结大赏
- 解决:浏览器下载的Excel文件显示“文件已损坏,无法打开”
- 你知道怎么快速将Ps(EPS)格式图片转成png、jpg等格式吗
热门文章
- 佛山天然文化石,莱福石材,佛山青石板
- AD20无法铺铜的原因
- Python实例8:利用条件结构计算个人所得税
- AS构建失败,提示Cause:connect timed out Connect to marven.google.com...connect time out
- Googlr VR SDK
- hdu 5544 Ba Gua Zhen(线性基+dfs)
- java perl 正则表达式_来自Perl类型正则表达式的Java正则表达式
- 坐标转换软件---coordgm_xpgod
- 一篇文章,带你了解微信扫码登录
- python--使用cnmaps绘制省界地图(快速上手,简单有效)