有关stm32的串口发送与接收的逻辑问题

发布者:美丽的1号最新更新时间:2022-09-26 来源: csdn关键字:stm32  串口发送  接收 手机看文章 扫描二维码
随时随地手机看文章

在弄毕业设计时遇到一个问题,而且这个问题困扰了我很久,究其原因是我没有一个清晰的逻辑。


首先我想实现的功能是循环向串口2发送一个命令数组,并且每发送完这个命令后,串口2接收一串数据,这个数据是由串口2连接的模块发送的。用串口2接收到后用串口1通过串口小助手打印出来。


我的问题就来了,我居然认为串口2发送出去的命令数组居然会中断串口2的接收中断!更可怕的是,我居然在串口2的接收中断中把接受到的数据用串口1打印出来。然后我就发现怎么中断不了也打印不出!我一直以为是我的发送数组函数写得有问题,或者是中断函数写错了,结果调试了很久,代码改了又改,又重新复习一遍串口知识,还是觉得自己写的串口函数都没问题。太苦恼了。


但终于我在这一个星期中的最后一天跟我妈视频过程中想通了这个问题!我在串口2接收中断函数中接收数据并串口1发送,然后又用数组,这一开始看没问题,但仔细想想就有大问题!呜呜呜因为这就相当于…等等我错了!这都不是问题,我的问题不是串口2与串口1的透传问题相当于用线把串口一二的接收发送相连,就如同一杯饮料里插着倒U形吸管,而是我没有静态化我的接收数组,所以后面我数组的第二三四的值为零,因为每中断一次,接收一个数据都存进了数组第一个元素。天啊!!!呜呜呜

关键字:stm32  串口发送  接收 引用地址:有关stm32的串口发送与接收的逻辑问题

上一篇:STM32 构建库函数
下一篇:STM32定时器中断配置

推荐阅读最新更新时间:2024-11-08 16:14

JLINK给STM32下载的两种模式--jtag & sw连线及配置
jtag线就不说了,将jlink的Vref、GND、TMS、TCK分别接至SW接口。对于STM32F103RCT6来说:TMS--PA12,TCK--PA14. 关于KEIL MDK中的设置如下图所示就可以了,然后就可以像下载JTAG那个下载sw了:
[单片机]
STM32开发板入门教程 - 串口通讯 UART
通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。 主要特性: 全双工的,异步通信 NR 标准格式 分数波特率发生器系统 -发送和接收共用的可编程波特率,最高到4.5Mbits/s 可编程数据字长度(8位或9位)
[单片机]
HardFault_Handler问题查找方法
STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、PC、XPRS 寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。 注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威) 编写问题代码如下: void StackFlow(void)
[单片机]
HardFault_Handler<font color='red'>问题</font>查找方法
MG995舵机工作原理及基于STM32的驱动源代码
一·MG995舵机工作原理 1.MG995舵机简介 产品型号 MG995 产品尺寸 40.7*19.7*42.9mm 产品重量 55g 工作扭矩 13KG/cm 反应转速 53-62R/M 使用温度 -30~+60° 死区设定 4微秒 插头类型 JR、FUTABA通用 转动角度 最大180度 舵机类型 模拟舵机 工作电流 100mA 使用电压 3-7.2V 结构材质 金属铜齿、空心杯电机、双滚珠轴承 无负载 操作速度 0.17秒/60度(4.8V);0.13秒/60度(6.0V) 附件包含 舵盘、线长 30CM、固定螺钉、减振胶套及铝套等附件 适用范围 1:10和1:8平跑车、越野车、卡车、大脚车、攀
[单片机]
MG995舵机工作原理及基于<font color='red'>STM32</font>的驱动源代码
模拟接收机电路图
模拟接收机电路图
[模拟电子]
模拟<font color='red'>接收</font>机电路图
基于STM32的FREERTOS应用的几个常见问题
1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核? 答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOS\Source\portable\IAR\ARM_CM0” 获取 port.c。 2、FreeRTOS 使用需要ROM/RAM? 答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。 如果创建的线程或队列数增加,RAM 使用量就会上升。 3、怎样设置 CPU 时钟? 答:CPU 时钟
[单片机]
贸泽率先独家备货STMicroelectronics的STM32 LoRaWAN 探索板
2017年2月24日 – 最新半导体和电子元件的全球授权分销商贸泽电子(Mouser Electronics) 即日起率先备货STMicroelectronics (ST)的STM32 LoRaWAN™ 探索板。这款新型探索套件与可从贸泽电子订购的Arduino兼容I-NUCLEO-LRWAN1 STM32 LoRa™扩展板一起作为一个平台,用于了解和评估基于LoRa和FSK/OOK 射频 (RF) 通信的解决方案。         贸泽电子独家备货的 ST STM32 LoRaWAN探索套件基于一体化开放式 Murata Type ABZ模块,支持低功率广域网(LPWAN) 和LoRaWAN 远程无线协议。Type ABZ模块包
[单片机]
手把手之STM32中断
●中断 中断,在单片机中占有非常重要的地位。代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转。而在单片机执行代码的过程中,难免会有一些突发的情况需要处理,这样就会打断当前的代码,待处理完突发情况之后,程序会回到被打断的地方继续执行。 ●关于STM32的中断 几乎任何一款单片机都会有中断。以STM32F407VE来说,这是一款基于Cortex-M4内核的芯片,在CM4内核中有关于中断的一些管理,在STM32芯片中也有关于中断的一些管理。因此可以总结出一条规律,STM32的中断是有两层控制器分别控制的,如果你想使用中断,那么必须同时配置内核和芯片。 ●CM4内核中断 从内核架构图可以看到,NVIC控制器来管
[单片机]
手把手之<font color='red'>STM32</font>中断
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved