推荐阅读最新更新时间:2024-03-16 14:52
STM32是如何进入中断服务函数xxx_IRQHandler的
今天在看stm32的中断,一时间不理解stm32主函数是如何进入中断函数的,按C编程的理解,会有个特定的入口之类的,但是看demo过程中没有发现入口。 以串口中断服务函数void USART1_IRQHandler(void) 为例,首先用到串口中断,需要先设定串口中断初始化以及串口初始化,另外void USART1_IRQHandler(void) 中断服务函数也应该写好。 发现在stm32的启动文件startup_stm32f10x_md.s中写到 DCD USART1_IRQHandler 其中DCD是一条数据定义伪指令,用于分配一片连续的字存储单元并用指定的数据初始化。 库里定义 #define USART1 ((
[单片机]
STM32的开漏模式和外接上拉电阻问题
首先介绍开漏模式的意义。 (1) 浮空输入_IN_FLOATING 浮空输入,可以做KEY识别,RX1 (2)带上拉输入_IPU IO内部上拉电阻输入 (3)带下拉输入_IPD IO内部下拉电阻输入 (4) 模拟输入_AIN 应用ADC模拟输入,或者低功耗下省电 (5)开漏输出_OUT_OD IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能 (6)推挽输出_OUT_PP IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
[单片机]
分析一个关于STM32 芯片异常复位的经典案例!
前言 本篇主要是介绍一种处理问题的思路,即当我们在做STM32应用开发过程中,遇到芯片异常复位,或者进入了异常处理时,如何通过集成开发环境,如IAR,KEIL等查看相应的ARM内核寄存器,定位出应用软件产生异常的地方! 问题描述 某STM32用户反馈,当使用STM32L4芯片的时候,程序运行一段时间后,会忽然复位。复位后程序继续运行,但是还会继续复位,原因不详! 问题分析 针对于此类问题,我们可以按照一个统一的思路去处理。分析本案例的大致步骤如下: 1、初步确定复位的原因,是硬件复位,如外部NRST被拉低,还是软件复位,包括软件直接调用复位,或者看门狗复位,还是低功耗模式如standby模式被唤醒时产生中断; 2、查看复位
[单片机]
UC_COS移植到STM32
1 在外设篇里面的点亮液晶屏(17)的基础上移植液晶屏 1 下载GUI解压放到工程的根目录下 图片1 2 将GUI里面的文件夹全部添加到工程文件里面。 图片2 3 把GUI里面每个文件夹里面的文件加入到工程。 1 在添加Config的时候,因为Config里面都是头文件所以需要选择Allfile文件类型然后在选择全部文件添加。 2 字体先不添加,以后编译的时候需要那个字体在添加那个字体。 3 添加不带操作系统的延时函数文件GUI_X.c 4 添加图片文件的时候JPGE文件夹下面还有两个文件夹DOC和Image不需要添加,只需要添加JPGE下面的点C文件。 5 液晶屏驱动文件LCDDriver下面的文件先不
[单片机]
stm32中中断源名和中断处理函数名所在位置
两个文件分别在stm32f4xx.h(中断名) CORE—startup_stm32f40_41xxx.s(中断函数名) #if defined (STM32F40_41xxx) CAN1_TX_IRQn = 19, /*! CAN1 TX Interrupt */ CAN1_RX0_IRQn = 20, /*! CAN1 RX0 Interrupt */ CAN1_RX1_IRQn = 21, /*! CAN1 RX1 Interrupt
[单片机]
stm32 GPIO速率
GPIO的输出速率:GPIO电平每秒切换的最大次数, 单纯GPIO意义不大,不过在通讯方面对于GPIO是有要求的。 这个输出速率主要体现I/O驱动电路的输出反应能力,通过选择不同的输出驱动速率,实现最佳的噪声与和功耗控制。不难理解,选择输出驱动速率越高,噪声也越大,相应的芯片功耗也会越大。所以对于这个输出频率的选择,不要太随意,合适就好。在满足应用的需求的前提下,就不要随意往高端速率选择 gpio不同速率设置对实际开发的影响: 1、LED闪烁快慢不一致 2、Audio 噪声 其中有I2S的音频播放功能。在调试时用到Printf串口打印,发现使用printf输出时会出现噪音,如果关闭printf则正常。直到将UART的TX输出端口
[单片机]
STM32 之 KEY
在win7下的rcc始终不对,在xp下面就是正常。现在还没有明白原因。 包含文件 (1)Main C语言: Codee#14612 /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 实验平台 : ST 官方三合一套件 + 硬件 : STM32F103C8T6 + 开发平台 : IAR For ARM 5.40 + 仿真器 : J-Link + 日期 : 2010-10-26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[单片机]
使用STM32的PWM输入功能计算输入PWM的周期
1、时钟部分,TIMER2的时钟频率,我是初始化为36M. RCC_PCLK1Config(RCC_HCLK_Div2); //设置低速AHB时钟=系统时钟/2 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // 倍频系数为9 PLLCLK="8"*9=72 2、TIMER初始化 TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period = 65535; TIM_TimeBaseStructure.TIM_Prescaler = 18; TIM_TimeBaseStructure.TIM_ClockDivision
[单片机]