最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口4,先开始我还觉得没什么,就是把USART1改成4以及改下开启时钟和配置引脚。
但是事实证明我的想法是多么愚蠢,调了整整2天,UART4发送很好,但是就是在接收时死活的卡在中断之前,就会进入HardFaultException B HardFaultException。真是百思不得其解,我就一步步调试跟踪,也没有发现任何问题,UART4的配置都是正确的,引脚也都没问题。这两天真是调试的快崩溃了。在网上查询该问题,大家也都没有答案,有些人甚至直接说UART4不能用,说心里话我不相信,别个STM那么大的公司,会推出不能用的功能?
在我最无助的时候,我突然想起我们大学老师的一句话,中断出问题,就多看看启动代码的中断向量部分,多去理解。事实证明老师是对的,我花了半天的时间仔细的看了我的启动代码,乖乖启动代码里面居然没有
IMPORT UART4_IRQHandler
IMPORT UART5_IRQHandler
DCD UART4_IRQHandler
DCD UART5_IRQHandler
而串口1、2、3都有。于是我加上了以上代码,串口成功的进入中断,并且接收到了数据。
搞了STM32已经快3个月了,第一次仔细的看了启动代码,之前一直认为启动代码就是现成的,所以从来都不去看,觉得看了也没用。事实证明这样的想法是愚蠢的。
发了下牢骚,但是真心希望大家不要忽略了启动代码。也真心希望以上解决方法能帮助到你。
关键字:STM32 启动代码
引用地址:
STM32学习之启动代码很重要!
推荐阅读最新更新时间:2024-03-16 16:18
stm32 id加密破解方法分享 STM32系列ID号加密解密方法
STM32系列ID号加密解密方法 STM32系列单片机通常会遇到ID号软加密,一般行外认识是不清楚如何去除软加密的,此次分享,是告诉您,如何判断是否有软加密及软加密去除方法。 具体方法如下: 1、读出完整程序段,搜索关键字节“E8F7FF1F”,因为STM32唯一的96位(12字节)ID基地址位于0x1FFF7E8,若程序段中涉及ID校验必然会读取芯片中ID索引该地址。。 2、用工具读取此芯片该地址的96位(12字节)ID码,找到空片区写入此地址,更改索引地址:例如此芯片ID码为“34FFDA 054E5038 31 19651843”选取起始地址区域0x80000020,在前四个字节输入 34 FF1843 ,后12字节输入
[单片机]
STM32 IO口的八种方式的解释
1、上拉输入:上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分。 2、下拉输入:就是把电压拉低,拉到GND。与上拉原理相似。 3、浮空输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。 通俗讲就是让管脚什么都不接,浮空着。 4、模拟输入:模拟输入是指传统方式的输入.数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的
[单片机]
33. 外部SRAM实验
STM32F103ZET6 自带了 64K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合,STM32 自带的这些内存就不够用了。比如跑算法或者跑 GUI 等,就可能不太够用,所以战舰 STM32 开发板板载了一颗 1M 字节容量的 SRAM 芯片: IS62WV51216, 满足大内存使用的需求。 本实验采用IS62WV51216 芯片,访问速度为55ns。 一。IS62WV51216简介 兼容TTL电平就是兼容5V,支持高/低字节控制,可以访问8位的字节。 本次实验选择的封装没有CS2引脚,只有CS1,为低电平片选。 LB和UB为低电平有效,比如如果LB==0,说明I/O 0
[单片机]
STM32-快速上手ADC
1. ADC端口映射 ADC肯定要外部输入信号的,通过IO口进行采集,IO与ADC通道的对应关系如下: 2. 配置 2.1 配置步骤 开启需要用到的ADCx时钟和对应的IO时钟 ADC模块和GPIO模块都在APB2时钟下 void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); 配置ADCx预分频器分频系数 void RCC_ADCCLKConfig(uint32_t RCC_PCLK2); 配置需要用到的对应IO设置为模拟输入 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTyp
[单片机]
新手入门使用STM32函数库之外部中断
啥也不说,先看看我的外星人开发板上的按键原理图。 板子偷懒,或者叫充分利用IO口得上拉功能,这边没有加常见的上拉电阻。到时候编程的时候使能IO的上拉就行了~看下面的接口知道了KEY0接到了STM32的PA13上! 曾经CZZ在梦里和我说过,STM32的任何一个IO都能作为外部中断输入,哇塞,超级强大! 参考一般的程序步骤如下: 1、系统初始化,如系统时钟初始化,使之进入72MHZ 主频; 2、GPIO 配置,务必注意打开GPIO 时钟时,一定打开AFIO 时钟。 3、EXTI 配置,在这里配置需要选择哪个引脚作为中断引脚。 4、NVIC 配置,这也是比单
[单片机]
STM32重难点-IIC原理及应用详细步骤
IIC概述 IIC介绍 I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。是半双工通信方式。 IIC特性 相对于UART,IIC的优点在于可以一对多,缺点在于无论主从器件均不对消息进行确认。 模拟IIC优点是可以任意选择SDA和SCL,不受管脚限制而比较灵活。它的缺点是不可用DMA。 硬件IIC优点是可用DMA减轻CPU负担,速度也比模拟IIC快,但是实际调试时可能会出现死
[单片机]
STM32之timer2的精准延时
一、简介 本文介绍STM32系列如何使用timer2进行精确定时。 二、实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片stm32f103c8t6) 仿真器:JLINK 三、版权声明 四、实验前提 1、在进行本文步骤前,请先阅读以下博文: 暂无 2、在进行本文步骤前,请先实现以下博文: 暂无 五、基础知识 暂无 六、实验步骤 1、编写并添加定时器2驱动 1)编写驱动GUA_Timer2.c(存放在“……HARDWARE”) //***************************
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(四)
补充一些硬件知识 SEGGER 给出的Jlink引脚图 开发板上的连接图 标准的JTAG连接图,供对照参考。 调试方式既可以用JTAG,也可以用SW。 以下是转载: SWD 仿真模式概念简述 先所说 SWD 和传统的调试方式有什么不一样: 首先给大家介绍下经验之谈: (一): SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。 基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。 (二): 在大家
[模拟电子]