我很会写BUG ——第一篇,STM32中断函数的重复定义

STM32的USART串口通讯程序 文章目录 文章目录文章目录寄存器与固态库一、了解串口通信及准备工作1.串口通信简介2.STM32 的 USART 简介3.实验环境二、USART串口实验总结 寄存器与固态库 基于寄存器与基于固件库的stm32 LED流水灯例子的编程方式差异比较: 1、基于寄存器方式的开发特点: (1)具体参数更直观; (2)程序运行占用资源少。 (3)寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解 (4)寄存器版式直接对内部寄存器进行操作,需要我们对寄存器非常熟悉 它的缺陷也不可忽视,如下: (1)开发速度 阅读详情

今天配置Usart.c和Usart.h串口通讯文件时编译后报错。

Error: L6200E: Symbol USART1_IRQHandler multiply defined (by usart.o and stm32f10x_it.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map. 

经过了漫长的检查,发现程序本身的编写没有错误,然后右键单击报错的中断函数void USART1_IRQHandler(void),尝试性的点了下Go to Definition of......

发现它跳转到了stm32f10x_it.c文件中的USART1_IRQHandler(),但是在同一个工程中,不可以出现两个相同的中断函数,所以这个报错的原因就是stm32f10x_it.c文件中重复定义了USART1_IRQHandler()函数。

那么解决报错就很简单了,方案有以下两种:

1.将stm32f10x_it.c文件中的USART1_IRQHandler()函数删去。

2.将Usart.c中的USART1_IRQHandler()函数的内容填入到stm32f10x_it.c中,然后将Usart.c文件中的USART1_IRQHandler()函数删去。(因为在stm32工程文件中stm32f10x_it.c文件原本的功能就是管理中断函数)。

正点原子stm32F407学习笔记5——串口通信实验 直接编译正点原子串口通信实验例程,主要关注main函数和USART1_IRQHandler中断服务函数的逻辑,不太好理解,主要关注下USART_RX_STA这个16位的变量做到类似于标志位的作用与 0x0a换行符0x0d为回车符的处理过程。USART_RX_STA的前13位作为数据长度,第14位收到0x0d后置位0x4000,第15位收到0x0a后置位0x8000后在主函数中发送接收到的数据,这些可以理解为自己定的协议。上位机给开发板发送数据,开发板将收到的数据发回给上位机。 阅读详情

相关推荐

keil5编译出现Symbol TIM2_IRQHandler multiply defined (by xxx.o and xxx.o)的解决办法

1、刚学使用keil5,在编译时出现了.\Objects\F407project.axf: Error: L6200E: Symbol TIM2_IRQHandler multiply defined (by rcs_timer.o and main.o).意思是:对TIM2_IRQHandler进行了重定义。这意味着我们对TIM2_IRQHandler进行了多次的定义。 2、解决方法 2.1 在工具栏搜索TIM2_IRQHandler,查看在多少地方对其进行了定义。 在fing in file窗口我们

树下等苹果的博客 1万+

STM32串口溢出中断避坑指南:为什么你的中断服务函数一直在跑?

本文深入解析STM32串口通信中常见的“幽灵中断”问题,其核心原因是串口溢出错误中断未被正确处理。文章详细剖析了ISR与ICR寄存器的工作原理,指出必须通过USART_ICR寄存器清除ORE标志才能终止持续触发的中断服务函数,并提供了基于HAL库的完整诊断步骤与实战解决方案。

juice的博客 1837

STM32自学之串口中断模式

今天是自学STM32的第7天了,之前的流水灯,按键,查询方式串口,PWM,计数器和红外有时间再补上来吧,先从今天调试的中断式串口写起吧。     事先说明,写此博客只是为了记录自己的自学历程,由于水平极其有限,所以很多理解可能是错的,欢迎大家积极指出,让我们一起在嵌入式的开发上向前进。    我所使用的是神舟三号学习开发板,芯片型号是STM32F103ZE。功能很齐全了,作为初期自学用绰绰有余

chouchaos的专栏 1417

STM32Fxxx中断EXTI重复触发问题解析与硬件级解决方案

本文深入解析了STM32F系列MCU中EXTI中断重复触发的硬件根源,指出Cortex-M内核与外部写缓冲区的时序差异是导致问题的关键。针对STM32F4等高性能型号,文章提供了插入DSB指令、增加额外写操作及调整代码顺序等硬件级解决方案,确保中断标志清除操作稳定完成,有效避免重复触发。

weixin_29192365的博客 209

江科大stm32视频学习笔记——TIM定时中断&定时器外部时钟

定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。STM32的定时器支持级联,可以用一个计时器的输出,当做另一个计时器的输入。还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。

m0_55127895的博客 2704

STM32完全学习——RT-thread在STM32F407上移植

关于源码的下载,以及在KEIL工程里面添加操作系统的源代码,这里就不再赘述了。需要注意的是RT-thread默认里面是会使用串口的,因此需要额外的进行串口的初始化,有些人可能会问,为什么不直接使用CubMAX直接进行系统的移植,经过我的尝试发现,这个玩意移植的RT-thread会有一些小的bug,比如直接生成的代码FinSH工作不正常,修改方法和第七节一样。虽然整个系统的调度啥的都是正常的。

2401_83010734的博客 3128

STM32CubeMX串口接收中断优先级配置:关键要点解析

深入解析STM32CubeMX中串口通信接收的中断优先级设置,掌握关键配置步骤与常见问题规避方法,提升stm32cubemx串口通信接收的稳定性和实时性。

weixin_35307279的博客 985

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 379

SCS 43. 利用Scissor算法从单细胞数据中挖掘临床表型关联的细胞亚群

本文详细介绍了Scissor算法在单细胞转录组数据分析中的应用,该算法能够精准挖掘与临床表型关联的细胞亚群。通过建立单细胞RNA测序数据与临床预测模型的直接关联,Scissor避免了传统聚类方法的局限性,为疾病机制研究和个性化医疗提供了新工具。文章还涵盖了数据预处理、模型选择、结果验证等实战技巧。

weixin_28736335的博客 493

MATLAB功率谱函数psd与pwelch的使用

在网上看到 clear; Fs=1000; n=0:1/Fs:1; y=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); Nfft=1000; window=hanning(100); noverlap=20; dflag='none'; [Pxx,f]=psd(y,Nfft,Fs,window,noverlap); figure plot(f,10*log10(Pxx)); xlabel('frequency/Hz');ylab

qq_41687938的博客 2万+

GWAS与eQTL相结合,进一步筛选疾病相关基因

欢迎关注”生信修炼手册”!在GWAS分析结果中,大部分显著的SNP位点都位于非编码区,很难直接挖掘这些位点的调控机制。通常假设与疾病关联的SNP位点通过调控基因表达来发挥作用,而eQTL...

庐州月光的博客 1万+

Cadence IC617仿真实践:有源电流镜的共模抑制比优化策略

本文基于Cadence IC617平台,详细介绍了有源电流镜共模抑制比(CMRR)的仿真与优化全流程。从电路搭建、DC工作点分析到AC仿真获取差模/共模增益,逐步解析CMRR计算方法。核心优化策略包括提升电流镜输出阻抗、优化差分对匹配性及调整晶体管尺寸,并探讨了与电源抑制比(PSRR)的权衡,为模拟集成电路设计提供实用指南。

weixin_29313817的博客 184

Slow waitForAckedSeqno took 64873ms (threshold=30000ms). File being written

Slow waitForAckedSeqno took 64873ms (threshold=30000ms). File being written

zhengzaifeidelushang的博客 2011

操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)

实验4 进程运行轨迹的跟踪与统计 实验目的 掌握 Linux 下的多进程编程技术; 通过对进程运行轨迹的跟踪来形象化进程的概念; 在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。 实验内容 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以

leoabcd12的博客 4654

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: STM32时钟简介及系统时钟频率的更改方式
早睡早起早锻炼
博客等级 码龄6年 11粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值