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

stm32之11.USART串口通信

可以添加上拉电阻,但会增加功耗,传输距离变长

  要添加库函数USART

 官方参考文档说明书位置

 ALT+左键可实现整体删除(如下图)

 输出模式第三种模式AF

----------------------

源码 

 远程控制pc端

#include <stm32f4xx.h>
#include "led.h"
#include "key.h"

#include "stdio.h"
    

//#define BIT_BAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

#define PFout(n) (*(volatile uint32_t *)(0x42000000+(GPIOF_BASE+0x14-0x40000000)*32+(n)*4))
#define PAin(n) (*(volatile uint32_t *)(0x42000000+(GPIOA_BASE+0x10-0x40000000)*32+(n)*4))
#define PEout(n) (*(volatile uint32_t *)(0x42000000+(GPIOE_BASE+0x14-0x40000000)*32+(n)*4))
#define PEin(n) (*(volatile uint32_t *)(0x42000000+(GPIOE_BASE+0x10-0x40000000)*32+(n)*4))
    
static     GPIO_InitTypeDef GPIO_InitStructure;
static     USART_InitTypeDef USART_InitStructure;
static     NVIC_InitTypeDef NVIC_InitStructure;

void usart1_init(uint32_t baud)
{

    //端口A硬件时钟打开
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
    
    //串口1硬件时钟打开
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
    
    //配置PA9 PA10为AF模式(复用功能)
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9 | GPIO_Pin_10 ;     //9 10号引脚
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;//输出模式第三种模式AF模式
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;//不使能上下拉电阻
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    
    //由于引脚支持很多功能,需要指定该引脚的功能,当前要制定支持USART1
    
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
    
    //配置USART1相关参数:波特率,数据位,停止位,校验位
    
    USART_InitStructure.USART_BaudRate = baud;   //波特率,就是通信的速度
    USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8位数据位
    USART_InitStructure.USART_StopBits = USART_StopBits_1;  //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);
    
    //配置中断触发方式,接收到一个字节,就通知CPU处理
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    
    //NVIC配置其优先级
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;  //中断号
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   //抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;      //响应优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    //打开通道给NVIC管理
    NVIC_Init(&NVIC_InitStructure);
    
    //使能USART1工作
    USART_Cmd(USART1, ENABLE);
    
    
    
}
//发送数据
void usart1_send_str(const char *str)
{

     const char * p = str;
    while(*p!='\0')
    {
        //发送一个字节
        USART_SendData(USART1,*p);
        p++;
        //等待发送完毕
        while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
    }
}

int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
        //抢占优先级0~3,支持4级!
    //响应优先级0~3,支持4级!
    key_init();
    Led_init();
    //初始化串口1波特率位115200bps,若发送/接收数据有乱码,请检查PLL
    
    usart1_init(115200);
    usart1_send_str("hello5555\r\n");
    while(1){

    
        }
    
}

void USART1_IRQHandler(void)
{
    static uint8_t d;
    if(USART_GetITStatus(USART1,USART_IT_RXNE) == SET)
    {
        d=USART_ReceiveData(USART1);
        
        
        if(d == 'A')PFout(9)=0;
        if(d == 'a')PFout(9)=1;    
        
        //告诉CPU,已经完成接收中断请求,可以响应新的接收中断请求
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    
    }

}

相关文章:

stm32之11.USART串口通信

可以添加上拉电阻&#xff0c;但会增加功耗&#xff0c;传输距离变长 要添加库函数USART 官方参考文档说明书位置 ALT&#xff0b;左键可实现整体删除&#xff08;如下图&#xff09; 输出模式第三种模式AF ---------------------- 源码 远程控制pc端 #include <stm32f4x…...

Python实现T检验

今天来分享一下T检验的python实现方法。 01 先来上一波概念。 1.单样本t检验&#xff0c;又称单样本均数t检验&#xff0c;适用于来自正态分布的某个样本均数与已知总体均数的比较&#xff0c;其比较目的是检验样本均数所代表的总体均数是否与已知总体均数有差别。已知总体均数…...

校招算法题实在不会做,有没有关系?

文章目录 前言一、校招二、时间复杂度1、单层循环2、双层循环 三、空间复杂度四、数据结构五、校招算法题实在不会做&#xff0c;有没有关系&#xff1f;六、英雄算法集训 前言 英雄算法联盟八月集训 已经接近尾声&#xff0c;九月算法集训将于 09月01日 正式开始&#xff0c;目…...

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol 0. 版本0.1 SignatureChecker.sol 1. 目标合约2. 代码精读2.1 isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) 0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[for…...

如何修改字符串内容?

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; String 1. 修改字符串2. StringBuilder和…...

pgadmin4中的备份与恢复

一&#xff0c;postgresql 数据的备份与恢复 &#xff08;一&#xff09;数据库备份与恢复 1&#xff0c;备份 windows环境 1> dump 逻辑备份 1&#xff0c;用管理员身份打开power shell 2&#xff0c;切换到本机 postgresql 安装目录下的 bin 目录&#xff1a; PS C…...

内网穿透——搭建私人影音媒体平台

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…...

使用psql操作PostgreSQL数据库

postgresql的操作和mysql差别较大。。 可以使用 psql 命令行工具或者其他的 PostgreSQL 客户端工具来查看表。如下是使用 psql 命令行工具查看表的方法&#xff1a; 连接到 PostgreSQL 数据库&#xff1a; 如果一个PostgreSQL的连接为 postgresql://用户名:密码127.0.0.1:5432/…...

什么是网络取证(Network Forensics)

企业采用新技术来检查其网络安全是否存在零日漏洞&#xff0c;与立即指示问题的物理层不同&#xff0c;黑客攻击尝试可能会被忽视并变得严重&#xff0c;直到对网络流量有一个整体的可见性。通过实时监控来跟踪其源和目标的流量&#xff0c;以查明问题或潜在问题的根源。 什么…...

农村农产品信息展示网站的设计与实现(论文+源码)_kaic

摘 要 随着软件技术的迅速发展,农产品信息展示的平台越来越多,传统的农产品显示方法将被计算机图形技术取代。这种网站技术主要把农产品的描述、农产品价格、农产品图片等内容&#xff0c;通过计算机网络的开发技术&#xff0c;在互联网上进行展示&#xff0c;然后通过计算机网…...

keepalived+lvs(DR)(四十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、作用 二、调度器配置 三、web节点配置 一、作用 使用keepalived解决lvs的单点故障 高可用集群 二、调度器配置 安装keepalived yum install -y k…...

从数据孤岛到企业xPA的演化

“数据孤岛”一直以来是企业在信息化进程中面临的比较头疼的问题&#xff0c;由于数据独立存在于不同部门之中&#xff0c;无法进行相互联动&#xff0c;致使数据库无法兼容&#xff0c;这无形中加大了跨部门合作的沟通成本。在此背景下&#xff0c;一种新兴的规划方法——扩展…...

视觉注意力收集

参考博文&#xff1a;神经网络学习小记录64——Pytorch 图像处理中注意力机制的解析与代码详解_pynq 注意力机制_Bubbliiiing的博客-CSDN博客 【计算机视觉】详解 自注意力&#xff1a;Non-local 模块与 Self-attention (视觉注意力机制 (一))_自注意力模块_何处闻韶的博客-CS…...

StableVideo:使用Stable Diffusion生成连续无闪烁的视频

使用Stable Diffusion生成视频一直是人们的研究目标&#xff0c;但是我们遇到的最大问题是视频帧和帧之间的闪烁&#xff0c;但是最新的论文则着力解决这个问题。 本文总结了Chai等人的论文《StableVideo: Text-driven consistency -aware Diffusion Video Editing》&#xff…...

「快学Docker」Docker容器安全性探析

「快学Docker」Docker容器安全性探析 引言容器安全性威胁Docker容器安全性目录容器镜像安全性主机与容器隔离访问控制运行时监控与防御网络安全性Docker容器安全性最佳实践 总结 引言 在当今快速发展的软件开发和部署领域&#xff0c;容器化技术已经成为一种不可或缺的工具。然…...

鲍威尔“放鹰”,美联储或将再加息?

KlipC报道&#xff1a;美联储主席鲍威尔8月25日举行的杰克逊霍尔全球央行年会上表示&#xff0c;尽管过去一年通胀总体持续下行&#xff0c;但住房和服务通胀仍处于高位&#xff0c;鲍威尔也表达了通胀上行风险的担忧&#xff0c;多次表示可能会在适当的情形进一步加息。演讲结…...

docker go安装库失败

在 Docker 容器中使用 Go 获取包时超时&#xff0c;可能是由于网络问题或者是由于特定的网络限制。以下是一些建议和解决方法&#xff1a; 更改下载源: Go 默认使用 proxy.golang.org 作为模块代理。在某些地区或网络环境中&#xff0c;这可能会导致超时。你可以尝试更改 Go 的…...

利用python进行键盘模拟输入

记一次利用python模拟键盘输入&#xff0c;由于键盘中英文切换较为麻烦&#xff0c;所以写了两个小程序分别进行英文字符模拟或中文字符模拟。 #用于键盘英文字符输入模拟 import pyautogui import timedef simulate_typing(text):# Give some time to switch to the desired …...

2024年java面试(二)--spring篇

文章目录 1.spring事务传播机制2.spring事务失效原因3.Bean的生命周期4.Bean作用域5.依赖注入三种方式&#xff08;Ioc的三种实现方式&#xff09;6.实例化bean的三种方式7.IOC容器初始化加载Bean流程 1.spring事务传播机制 声明式事务虽然优于编程式事务&#xff0c;但也有不…...

cyclictest stress 工具 使用

工具介绍 1. Cyclictest 准确且重复地测量线程的预期唤醒时间与它实际唤醒的时间之间的差异&#xff0c;以提供有关系统延迟的统计数据。 它可以测量由硬件、固件和操作系统引起的实时系统延迟 2.stress是Linux的一个压力测试工具&#xff0c;可以对CPU、Memory、IO、磁盘进行…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...