问题描述:在debugger模式下,运行后,串口通信正常,过一会串口通信异常,暂停仿真发现程序死在default_Handler
原因:没有中断入口函数,当然了,有些人可能会这么写
void USART1_IRQHandler(void)
{
}
以为这样就算是加了中断入口函数了,但开启串口中断接收 USART_ITConfig(USART2, USART_IT_RXNE, ENABLE) 时,同时也打开了串口ORE中断。所以,中断入口函数应该这么写
void USART1_IRQHandler(void)
{
uint8_t value;
if(USART_GetFlagStatus(USART1,USART_IT_RXNE) == SET)
{
value = USART_ReceiveData(USART1);
}
if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
{
/* Clear the USART1 Receive interrupt */
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET)
{
USART_ReceiveData(USART1);
USART_ClearFlag(USART1,USART_FLAG_ORE);
}
}
经过本人测试,串口通信正常运行,不会在跑飞了
关键字:STM32 程序仿真 default_handler
引用地址:
关于STM32程序仿真时卡死在default_handler的解决方法
推荐阅读最新更新时间:2024-03-16 16:23
STM32 时钟配置方法
一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 二、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法:如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: ①对于1
[单片机]
STM32 ST-LINK Utility安装下载程序配置
一,官方下载地址: http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link004.html 二,ST-LINK Utility简介 STM32 ST-LINK Utility工具在产品开发过程中测试一些其他版本的代码,可以直接下载hex,而不用打开工程再编译去下载。 当你开发完一个STM32产品,需要量产的时候,就可以用这个工具直接下载hex代码,对代码加密(读保护)。 ST-LINK V2两种不同版本接口管脚信息: STM32 ST-LINK Utility软件包含S
[单片机]
STM32设置为I2C从机
硬件平台:STM32F401 编辑器 : keil 5.18 操作系统:win7 一、I2C协议 在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变 。 起始和停止条件 SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 寻址方式(7/10位地址方式) 第一个字节的头7 位组成了从机地址,最低位(LSB)是第8 位,它决定了传输的 普通的和带重复开始条件的7位地址格式方向。第一个字节的最低位是“0”,表示主机会写信息到
[单片机]
基于STM32的语音导览系统的设计
景点语音导览主要有以下几种方式:一种是通过全球定位系统(GPS)的用户终端接收工作卫星的导航信息,从而解算出车辆的经纬度信息,进而计算出实时坐标,将其与景点坐标相比较,当车辆驶入景点一定距离范围内时,不用人工干预,系统自动播报景点语音信息;另一种是对车轮轴的转角脉冲进行计数,将计数值和预置值对比,即可确定播放时刻,达到准确播放景点语音信息的目的;第三种方案是利用无线射频识别技术,在每一个景点范围内设置一个具有唯一ID 的射频发射器,采用间歇工作方式发射信号,当旅游列车即将到达景点时,车载系统接收到射频发射器信号并解码出景点的ID 号,由系统控制自动播放对应编号的景点语音信息。由于景点自然环境的复杂性,第一种方式难以满足系统要求;第
[电源管理]
STM32 模块篇-温湿度传感器模块(DHT11)实验
5.03 温湿度传感器模块实验 5.03.1 概述 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20 米以上,使其成为各类应用甚至最为
[单片机]
stm32配置PHY芯片
一、时序介绍 使用MDC 、MDIO两只引脚进行数据配置。时序为: 二、底层驱动代码 1、读PHY寄存器地址: u16 PHY_WAN_Reg_Read( u8 PhyAddress, u8 RegisterAddress ) { u8 i; u8 bValue; u16 wValue; PHY_WAN_MDIO_Out(); //Preamble for( i = 0; i 32; i ++ ) { PHY_WAN_WRITE_BIT(1); } //Start PHY_WAN_WRITE_BIT(0); PHY_WAN_WRITE_BIT(1
[单片机]
keil5中新建一个STM32工程
前言 相信很多stm32的初学者对于创建一个新的工程还是感觉比较困难的,即使学习了一段时间的stm32,创建一个新工程还是会感到无所适从。相信大家在学习stm32之初都是把整个例程工程文件copy下来,在这个基础上进行修改编程的,这样就省掉了很多烦恼。本人自学stm32已经有好久的一段时间了,现在在准备秋招,顺便也把之前学过的内容复习一遍。在整理stm32资料的时候,突然发现之前自己学习stm32的时候不会自己新建一个stm32工程,所以今天趁空闲之余,学习怎么去创建一个新工程,并记录下来跟大家分享。 创建一个stm32工程的步骤 1. 准备资料 大家可以点击一下网址,下载创建工程时所需的固件库: http://downloa
[单片机]
Event Recoder调试组件在stm32上的使用
本文目标:Event_Recoder调试组件在stm32上的使用 按照本文的描述,应该可以在你所处的硬件上跑通代码。 先决条件:装有编译和集成的开发环境,比如:Keil uVision5。 板子硬件要求:无,属于调试功能。 起源 因为做产品开发,设计东西有时候考虑得多,mcu的并没有多余的串口供使用调试,在调试一些初期进行验证时,必要的调试的打印信息是需要的。 Event Recoder调试组件简介 嵌入式的Event_Recoder调试组件是一种可以在MDK开发环境下使用的高级调试工具,它可以记录软件运行的一些标志信息,并以图形化的形式显示出来。它可以帮助你了解和分析内部操作,支持Keil RTX操作系统调试以及MDK自带的
[单片机]