精华内容
下载资源
问答
  • 关于stm32芯片调试只进一次main函数的问题解决办法
    2021-09-30 14:15:31

    程序一直卡在0x08000F14 BEAB      BKPT     0xAB_Init (0x080001BE)这一段,发现是printf的问题。把printf屏蔽掉就好了,因为用到printf,它会自己调用semihosting半托管机制(类似于找不到输出口,所以迷路了的意思?)所以如果非要用printf就需要增加一段重定向代码,告诉芯片把字符串输出在哪个串口上。

    最近还碰见一个问题,解决之后再补坑吧--

    更多相关内容
  • STM32串口接收中断只执行了一次

    千次阅读 2021-06-01 17:55:38
    最近调试过程中遇到一个小问题,也是大问题 网上的资料很少,记录一下,...数据只能执行一次,估计是缓冲区被占位,必须读取出来才能继续接收 日后有时间再研究一下 解决方法 加上Res = UART_ReceiveData(UART2); ...

    最近调试过程中遇到一个小问题,也是大问题
    网上的资料很少,记录一下,欢迎评论佐证~
    插入代码
    在这里插入图片描述
    中断服务函数中去掉读取Res = UART_ReceiveData(UART2); 后
    数据只能执行一次,估计是缓冲区被占位,必须读取出来才能继续接收
    日后有时间再研究一下

    解决方法 加上Res = UART_ReceiveData(UART2);

    展开全文
  • STM32单片机串口接收中断只能接收一次数据的问题: 1、串口只能执行第一次接收中断,并在LCD屏幕上成功显示 2、第二次通过串口发送数据时,debug查看发现接收时数据出现错误,表现为接收数据第二位开始才是有效值,...

    实践场景:

    提示:这里简述项目相关背景:

    STM32板子型号:STM32F103RBT6

    内容:将RTC的初值设置为23:59:55,并将时间显示在LCD屏上,通过串口发送"XX:XX:XX",XX分别表示时、分、秒,可以完成时钟的重新配置。若发送数据不符合规定,则不做更改。

    使用的串口类型:蓝桥杯比赛的串口 AccessPort
    在这里插入图片描述


    问题描述

    串口接收中断出现的问题:

    1、串口只能执行第一次接收中断,并在LCD屏幕上成功显示

    2、第二次通过串口发送数据时,debug查看发现接收时数据出现错误,表现为接收数据第二位开始才是有效值,之后再进行发送则不再进入接收中断

    3、(作者也不知道的问题)在通过对1和2的问题进行修改之后(方法在后面),重新注释掉修改的代码进行编译,发现问题也不会重新出现,如果有知道原因的朋友,欢迎评论区探讨。


    一、有问题的串口配置:

    u8 uart_buf[8];
    u8 uart_count=0;
    _Bool rtc_flag = 0 ;
    void USART2_IRQHandler(void)
    {
      if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
      {
    	USART_ClearITPendingBit (USART2, USART_IT_RXNE);
        /* Read one byte from the receive data register */
        uart_buf [uart_count++] = USART_ReceiveData(USART2);
    		
    	if(uart_count >= 8)
        {			
    		uart_count = 0;	
    		rtc_flag = 1;
    		USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);		
        }		
      }
    }
    

    中断的开启:

    USART_Cmd(USART2, ENABLE);
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    

    以上的配置一开始只能进行一次正常的数据接收。


    解决办法:

    通过IDLE中断RXNE中断结合: 实现接收一个字节,产生RXNE中断,一帧数据(串口一次接收的数据)接收后 ,产生IDLE中断

    例:串口收到一个字节,产生8次RXNE中断和1次IDLE中断

    一帧数据:
    比如说单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据。IDLE中断就是串口收到一帧数据后产生的中断。


    解决方案:

    IDLE中断
    一、F1系列的单片机:“先读SR寄存器,再读DR寄存器”。
    二、F0系列的单片机:需要用ICR寄存器清楚。
    由于我用的是F1系列的单片机,处理方法如下:

    1、串口初始化函数中,使能IDLE中断

    USART_ITConfig(USART2, USART_IT_IDLE, ENABLE);
    

    2、串口中断函数中,添加IDLE中断处理:

    	else if(USART_GetITStatus(USART2,USART_IT_IDLE) != RESET)//接收到一帧数据
    	{
    		USART2->SR;//先读SR
    		USART2->DR;//再读DR
    		uart_count = 0;
    		printf("%s", uart_buf);
    	}
    

    最后一个问题:就是在编译了一次IDLE中断处理之后,再注释掉添加的IDLE中断,就没有出现原来的问题了,不是很明白是怎么回事。不过加上IDLE中断是真的不用担心是不是接受完一帧数据了。


    完整代码链接: STM32F103RBT6单片机修改RTC时钟初值的串口接收中断问题。.
    原帖地址: https://blog.csdn.net/main_h_/article/details/55668953.
    十分感谢原帖楼主的分享。

    展开全文
  • 现象:第一次从stop模式唤醒时串口能正常通信,判断一段时间后无数据则再一次进入stop mode,然后再一次唤醒,此时串口无法输出。后发现原因是串口重新初始化时HAL_UART_Init()函数中会判断if(huart->State =...

     

     

    现象:第一次从stop模式唤醒时串口能正常通信,判断一段时间后无数据则再一次进入stop mode,然后再一次唤醒,此时串口无法输出。
    后发现原因是串口重新初始化时HAL_UART_Init()函数中会判断if(huart->State == HAL_UART_STATE_RESET),此时才会执行HAL_UART_MspInit(huart),配置串口IO口。
    解决办法:每次将UART_HandleTypeDef结构体中的State成员初始化为HAL_UART_STATE_RESET。或者再次初始化之前调用HAL_UART_DeInit()。

    展开全文
  • STM32 DMA中断只进入一次的解决办法

    千次阅读 2019-10-08 13:47:05
    问题解决参见:http://bbs.ednchina.com/BLOG_ARTICLE_3014819.HTM 经过我验证,这个说的是对的。 转载于:https://www.cnblogs.com/kanite/p/4213565.html
  • stm32使用hal库配置串口接收中断

    千次阅读 2021-10-06 13:54:06
    此函数使能串口接收中断,并且进入中断后需要重新设置,否则只能进入一次。第三个参数是接受到多少数据后进入中断,也就是接收缓冲区。这个参数最好设置为1,在中断中一个个处理接受的的每个字节。 ...
  • 串口通信简介 物理层主要就是定义通信接口、电平标准这些东西   - 物理接口是指UART、USB、COM这类物理形式的硬件   -电平标准:根据使用的电平不同,串口通信可以分为TTL标准和RS-232标准 ...用STM32CubeMX新建U
  • 本文开发环境: ...HAL库版本:STM32Cube_FW_F1_V1.8.0(STM32Cube MCU Package for STM32F1xx Series) 本文内容: 不定长数据接收的原理 IDLE空闲中断介绍 串口接收IDLE空闲中断的配置 串口收发DMA线的...
  • 摘要:月黑风高夜!双黑手伸向了室友的STM32开发板!一日逛淘宝,推送STM32F103ZET6原装芯片,惊!STM32F103ZET6居然涨价到388一片。、什么是GD32GD32是...
  • 之前使能串口中断 调用HAL_UART_Receive_IT(); 为了之后其他串口使用相同函数发送CMD void UART_PortConfig(uint8_t num, UART_HandleTypeDef *h_uart) { UART_Handle_Array[num-1] = h_uart; /* Enable the ...
  • 最近做STM32串口编程踩的几个坑

    千次阅读 2021-12-09 11:54:11
    使用STM32CubeIDE开发,串口用HAL库,串口因为数据不定长,用HAL_UARTEx_ReceiveToIdle_DMA函数接收;第二个数据定长用HAL_UART_Receive_DMA接收。 DMA只能收到个字节 最终也没有找到原因,重建新的项目好了。...
  • 在自己的产品测试中 子机正常模式下运行毫无问题 都正常但是远程主机端 一直发送数据 ,就会导致产品lcd花屏 串口死机而且显示lcd花屏 串口后面才死机的的 两者死机间隔时间有长有短 不必深究,通过其他没有接在总线...
  • 简述:使用TIM2捕获pwm IDE: KEILv5.27 Firmware Package:STM32...huart1,(uint8_t *)SendBuff,SendBuffSize),但串口只能接收到一次。 用单步调试看了一下,只进入一次if (huart->gState == HAL_UART_STATE_READ
  • 、操作步骤 使用SMT32CubeMx配置指定引脚为UART后在右侧界面点击Connectivity->USART2->Mode选择异步模式Asynchronous,查看串口的基础配置-Parameter Settings,保持默认不变。 选择NVIC Settings...
  • 在B站跟着小蜜蜂老师的基于STM32CubeMX的嵌入式开发基础教程学习到了P6串口数据收发基础,最后实现时出现了问题即题目描述。 老师在教程中也遇到了同样的问题但在加入了第79行和87行的代码后得到了解决,但我的情况...
  • STM32之DMA学习

    2020-08-16 17:32:02
    传统的DMA的概念是用于大批量数据的传输,但是我理解,在STM32中,它的概念被扩展了,也许更多的时候快速是其应用的重点。数据可以从1~65535个。 直接存储器存取(Direct Memory Access,DMA)是计算机科学中的种...
  • 关于STM32中定义数组的问题

    万次阅读 2017-07-23 23:40:29
     问题描述:DEBUG中对数组指针add watch,发现指针由0增加至1后就不再增加,怀疑TIM2配置有问题,只进一次中断。于是查了半天关于定时中断配置及清除中断标志位的问题,一直得不到解决。 void TIM2_IRQHandle
  • HAL库学习——串口中断

    千次阅读 2020-06-23 15:30:00
    首先使用STM32CubeMX配置串口参数和工作方式。如下图: 配置好基础参数波特率和数据长度,校验位,停止位后,选择NVIC Settings点击Enabled使能全局中断。 这样整个串口配置就完成了。 三、开启接收中断...
  • 例:Tck = 80MHz,PSC = 80 - 1,arr = 10000 - 1,则定时器周期 = 80 * 10000 / 80000000 = 10ms,如果开启中断就是每10ms进入一次中断函数。 STM32CubeMX配置 时钟,时钟树配置不再叙述。 定时器配置: GPIO配置...
  • STM32外设DMA使用总结

    千次阅读 2015-06-13 17:24:03
    STM32外设DMA使用总结: 1、根据需要选择DAM模式: 2、对于DMA1的Chanel3,对应外设为USART3的RX 试想:如果串口接收中断和DAM中断同时打开,CPU如何相应? (1)中断优先级不同:这好说,支持嵌套中断(NVIC)的Cortex-...
  • 可是烧进程序后只进一次LED任务,就不进了,最后发现根本没有开启系统时钟的中断,在主函数中调用BSP_Tick_Init();函数,开启中断,LED终于正常了! LED正常之后,换回串口任务,目前串口正常了,电脑可以正常...
  • IO 口模拟通信,能了解通信的本质,但是单片机程序却需要不停的检测扫描单片机 IO 口收到的数据,大量占用了单片机的运行时间。 其实我们并不是很关心通信的...UART串口通信的基本应用 51 单片机内部就存在这样个 UA
  • 数据库编程总结

    2019-10-07 23:06:50
    当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...数据库编程是对数据库的创建、读写等列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端...
  • 但是我认为,RTOS是实时的开放性的操作内核,它给了我们个编写程序和运行程序的基本框架,它的实时性,并不是它最显著的特点,相反,由于引入了系统现场保存和恢复时间开销,其实时性能反而比一般程序(结构优化过...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

stm32串口中断只进一次