当前位置: 首页 > news >正文

ch32v003记录2,串口通信例程

···

#include “ch32v00x.h”
#include <stdio.h>

/* 发送一个字符 */
void uart_putc(char ch)
{
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1, ch);
}

/* 接收一个字符(阻塞) */
char uart_getc(void)
{
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
return (char)USART_ReceiveData(USART1);
}

/* UART 初始化 */
void uart_init(uint32_t baudrate)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
USART_InitTypeDef USART_InitStructure = {0};

/* ① 使能外设时钟 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_USART1, ENABLE); /* ② 配置 GPIO: * PD5 — USART1_TX (复用推挽输出, 10MHz) * PD6 — USART1_RX (浮空输入) */ // TX — PD5 pin8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); // RX — PD6 pin1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure); /* ③ 配置 USART1 参数 */ USART_InitStructure.USART_BaudRate = baudrate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* ④ 使能 USART1 */ USART_Cmd(USART1, ENABLE);

}

/* 主函数 */
int main(void)
{
uint8_t rx_buf[5];

/* 系统时钟默认 HSI 24MHz,如有需要可另行配置 */ SystemInit(); uart_init(115200); printf("CH32V003J4M6 UART Test——Hello!\r\n"); printf("waiting 5 bytes...\r\n"); while (1) { for (int i = 0; i < 5; i++) { rx_buf[i] = uart_getc(); } printf("Recv 5 bytes: "); for (int i = 0; i < 5; i++) { uart_putc(rx_buf[i]); } printf("\r\n"); }

}
···
pin1.和pin8,要注意的是叫tx和rx的互换

http://www.jsqmd.com/news/736211/

相关文章:

  • 不止是改密码:深度挖掘麒麟KYLINOS恢复模式的隐藏玩法与安全边界
  • 多智能体系统性能优化:架构选择与错误控制策略
  • 离散扩散模型原理与Duo++优化实践
  • CF1666E 题解
  • 《文字定律》下册第三篇 (走向三级文明的人和AI)
  • 猫抓浏览器插件终极指南:高效嗅探网页视频音频资源的免费开源工具
  • MECOOL KP1智能投影仪评测:Android TV与1080P画质体验
  • EASY-HWID-SPOOFER:3大核心技术深度解析与实战指南
  • 还在吃预制菜的年轻人,被硬生生地逼成了宠物营养师
  • VMware Workstation 17保姆级教程:手把手教你安装Ubuntu 22.04.3 LTS服务器版(含SSH配置与Root登录)
  • 开源命令行工具指南:构建高效开发工作流与自动化实践
  • 保姆级教程:给你的Nginx access.log“加料”,轻松记录POST请求体和自定义请求头
  • AI驱动社交媒体自动化:从CLIP图像识别到GPT文案生成的技术实践
  • 通俗数学6-经典电子半径和康普顿波长的比正好是反常磁矩的倒数
  • 从WebSocket到LevelDB:构建极致高效聊天应用的技术架构与实践
  • Python爬虫实战:抖音无水印视频下载工具原理与避坑指南
  • 【限时解禁】VSCode 2026私有Agent Hub部署方案:仅限首批200家企业的内测配置模板与安全沙箱白皮书
  • 在Windows 10/11中实现HEIC缩略图预览:开源解决方案完全指南
  • 当核心交换机宕机时,你的业务能扛几秒?深度拆解MSTP+VRRP的故障切换实战
  • 2026年奔驰商务车价格拆解:靠谱服务商的判断标准 - 优质品牌商家
  • 028 PID控制器的局限性分析
  • 基于Cursor AI与Next.js+Prisma的全栈Todo应用开发实战
  • 2026年冲刺上音音乐艺考培训排行及避坑参考:考上音区哪家培训、考浙音去哪家培训、萨克斯艺考培训、走读音乐艺考选择指南 - 优质品牌商家
  • 如何用OBS多平台推流插件实现一次编码同步直播到多个平台
  • 【仅限首批金融客户开放】:VSCode 2026专属Security Pack v2.1内测权限申请通道开启,含证监会《证券期货业网络信息安全管理办法》智能映射引擎
  • 【前端(十)】CSS 过渡与动画笔记
  • IEEE软件需求规格说明标准
  • 从PyTorch DDP到NCCL底层:一次搞懂GPU跨机通信(RDMA/IB/RoCE扫盲)
  • 优雅重启:基于Unix域套接字的进程零停机更新原理与实践
  • LeetCode自动化刷题工具:从原理到实践,打造高效算法训练工作流