STM32实现串口发送字符和字符串

效果:(字符串的收发还是有问题,只能实现预置字符串的发送,无法实现输入字符串回响)

代码:

#include "uart4.h"

void hal_uart4_init()
{
    // GPIOB使能
    RCC->MP_AHB4ENSETR |= (0x1 << 1);
    // GPIOG使能
    RCC->MP_AHB4ENSETR |= (0x1 << 6);
    // UART4使能
    RCC->APB1RSTCLRR |= (0x1 << 16);

    // GPIOG设置为复用
    GPIOG->MODER &= (~(0x3 << 22));
    GPIOG->MODER |= (0x2 << 22);
    // GPIOB设置为复用
    GPIOB->MODER &= (~(0x3 << 4));
    GPIOB->MODER |= (0x2 << 4);

    // GPIOB的复用功能设置
    GPIOB->AFRL &= (~(0xF << 8));
    GPIOB->AFRL |= (0x8 << 8);
    // GPIOG的复用功能设置
    GPIOG->AFRL &= (~(0xF << 12));
    GPIOG->AFRL |= (0x6 << 12);

    // UART初始化
    USART4->CR1 &= (~(0x1 << 12));
    USART4->CR1 &= (~(0x1 << 28));
    USART4->CR1 &= (~(0x1 << 10));
    USART4->CR1 &= (~(0x1 << 15));
    USART4->CR1 |= (0x1 << 2);
    USART4->CR1 |= (0x1 << 3);
    USART4->CR1 |= (0x1);

    // UART设置停止位
    USART4->CR2 &= (~(0X3 << 12));

    // UART设置波特率
    USART4->BRR &= (~(0XFFF));
    USART4->BRR |= (0X22B);
}

// 发送一个字符
void hal_put_char(const char str)
{
    while (!(USART4->ISR & 1 << 6))
        ; // 如果不为1则一直循环等待上一位发送完毕
    USART4->TDR = str;
}

// 发送一个字符串
void hal_put_string(const char *string)
{
    while (*string != '\0')
    {
        hal_put_char(*string++);
    }
}

// 接收一个字符
char hal_get_char()
{
    while (!(USART4->ISR & 1 << 5))
        ; // 等待一直到接收到数据为止
    return USART4->RDR;
}

// 接受一个字符串
char *hal_get_string()
{
    char buff[128];
    int i = 0;
    while (hal_get_char() != '\n' || hal_get_char() != '\r')
    {
        buff[i++] = hal_get_char();
    }
    buff[i] = '\0';
    return buff;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/763207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VUE2及其生态查漏补缺

1、数据代理概括 数据代理过程相当于是进行了 vm 代理 vm_data中的属性&#xff0c;vm._data 是与 我们vue文件中写的 data是全等的 //创建Vue实例let data { //data中用于存储数据&#xff0c;数据供el所指定的容器去使用&#xff0c;值我们暂时先写成一个对象。name:atguig…

自然语言处理基本知识(1)

一 分词基础 NLP:搭建了计算机语言和人类语言之间的转换 1 精确分词&#xff0c;试图将句子最精确的分开&#xff0c;适合文本分析 >>> import jieba >>> content "工信处女干事每月经过下属科室" >>> jieba.cut(content,cut_all …

妙笔 WonderPen 专业版会员值得购买吗?

在信息爆炸的时代&#xff0c;写作已经是一项重要技能。无论是学生、职场人士还是自由职业者&#xff0c;都经常需要写点东西。 一个好的工具能让写作成为享受&#xff0c;今天就为大家推荐专业写作工具&#xff1a;妙笔。为长文写作设计&#xff0c;且有云服务功能&#xff0…

全球AI新闻速递6.28

全球AI新闻速递 1.首款 Transformer 专用 AI 芯片 Sohu 登场。 2.钉钉&#xff1a;宣布对所有AI大模型厂商开放&#xff0c;首批7家接入。 3.华为联合清华大学发布《AI 终端白皮书》。 4.国家卫生健康委&#xff1a;推动AI技术在制定个性化营养、运动干预方案中的应用。 …

视频孪生助力智慧工厂:可视化安防管理与报警告警

在当今快速迭代的工业4.0时代&#xff0c;智慧工厂已成为提升生产效率、优化资源配置的关键所在。面对日益复杂的生产环境和多元化的业务需求&#xff0c;如何构建一个高效、智能且具备强大适应能力的智慧工厂也成为了众多厂商关注的焦点。为了满足工业制造的转型需求&#xff…

放弃吧!你招不到优秀AI产品经理;程序员优雅做副业指南;一人企业系统方法论(6万字);大模型训练10条黄金法则 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. 5亿条国内招聘信息&#xff0c;洞察 1639 种人类职业被AI替代的风险 2023年&#xff0c;OpenAI 发布了一篇论文 GPTs are GPTs: An Early Look at…

WIN11,如何同时连接有线网络与WLAN无线网络

之前写了两篇文章&#xff0c;一篇是双网卡多网卡时win11如何设置网卡优先级_多网卡设置网卡优先级-CSDN博客 另一篇是win11 以太网和WLAN冲突 连接网线时导致WiFi掉线 解决_win11 以太网和wifi不能同时生效-CSDN博客 这篇是对上面两篇的补充&#xff1a;主要解决电脑重启后&…

SCADA系统对于工业生产的意义!

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 SCADA系统在智能制造中扮演着至关重要的角色&#xff0c;它通过集成和自动化工厂车间的各种过程&#xff0c;提高了生产效率和产品质量&#xff0c;降低了成本&#xff0c;并…

fastzdp_login的第一次构建

概述 为了方便能够快捷的实现fastapi实现登录相关功能代码开发&#xff0c;决定开发一个开源的fastapi组件库&#xff0c;想了很多个名字&#xff0c;在检查pypi的时候发现都被占用了&#xff0c;所以最终决定使用fastzdp_login这个名字。 fast代表的时fastapi。zdp代表的是张…

AutoGen 两个agent讲相声

Lesson 1: Multi-Agent Conversation and Stand-up Comedy 第 1 课&#xff1a;多人对话和单口相声 Setup from utils import get_openai_api_key OPENAI_API_KEY get_openai_api_key() llm_config {"model": "gpt-3.5-turbo"}Define an AutoGen agent…

深度揭秘!Kafka和ZooKeeper之间的相爱相杀

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hey大家好,我是小米,今天我们来聊一聊在Kafka中,ZooKeeper到底扮演了什么样的重要角色。你是不是也曾在面试中被问到这个问题?别担心,今天这篇文章…

c进阶篇(三):字符串函数

1.strlen: strlen - C Reference strlen 函数是一个标准库函数&#xff0c;用于计算以 null 结尾的字符串的长度&#xff0c;也就是字符串中实际字符的数量&#xff0c;不包括最后的 null 终止符 \0。它定义在 <string.h> 头文件中。 函数原型:size_t strlen(const ch…

嵌入式UI开发-lvgl+wsl2+vscode系列:5、事件(Events)

一、前言 这节进行事件的总结&#xff0c;通过事件回调方式将用户和ui的交互行为绑定组合起来。 二、事件示例 1、示例1&#xff08;点击事件&#xff09; #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_USE_SWITCHstatic void event_cb(lv_…

关于发那科机器人系统升级方法

首先需要镜像备份和全备份&#xff0c;最好把机器人要到刻度线位置&#xff0c;零点位置 选择控制器启动&#xff0c;也可以按preevnext进入控制器模式

Spring Boot 实现 AOP 动态热插拔功能并附DEMO源码

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

排序(堆排序、快速排序、归并排序)-->深度剖析(二)

前言 前面介绍了冒泡排序、选择排序、插入排序、希尔排序&#xff0c;作为排序中经常用到了算法&#xff0c;还有堆排序、快速排序、归并排序 堆排序&#xff08;HeaSort&#xff09; 堆排序的概念 堆排序是一种有效的排序算法&#xff0c;它利用了完全二叉树的特性。在C语言…

2023软考中级《软件设计师》(备考冲刺版) | 数据库系统

目录 1.数据库的基本概念 1.1 数据库体系结构 1.2 三级模式结构 1.3 数据仓库 2.数据库设计过程 2.1 概念结构设计 2.1.1 概念设计过程 2.1.2 E-R图 2.2 逻辑结构设计 2.2.1 关系模式相关概念 2.2.2 E-R图转关系模式&#xff08;涉及下午题&#xff09; 2.2.3 关系…

以太网电缆专家手册:掌握RJ45连接器压接的艺术与科学

在这个日新月异的数字时代&#xff0c;正确的连接方式至关重要&#xff0c;而RJ45连接器正是实现这一点的关键工具之一。无论您是在家中布置办公网络&#xff0c;还是在公司部署复杂的IT基础架构&#xff0c;或是进行任何需要设备间高效数据传输的活动&#xff0c;掌握如何正确…

从实验室走向商业化,人形机器人时代要来了?

从国内市场看&#xff0c;据机构报告显示&#xff0c;预计到2026年中国人形机器人产业规模将突破200亿元。特别是在生成式AI技术大爆发的当下&#xff0c;未来人形机器人更是极有可能实现超预期增长。 近日&#xff0c;特斯拉CEO埃隆马斯克(Elon Musk)在特斯拉2024年股东大会上…

深入解析HDFS:定义、架构、原理、应用场景及常用命令

引言 Hadoop分布式文件系统&#xff08;HDFS&#xff0c;Hadoop Distributed File System&#xff09;是Hadoop框架的核心组件之一&#xff0c;它提供了高可靠性、高可用性和高吞吐量的大规模数据存储和管理能力。本文将从HDFS的定义、架构、工作原理、应用场景以及常用…