推荐阅读最新更新时间:2024-11-10 08:33
STM32启动解析,启动代码,__main main
启动代码看这里: http://blog.csdn.net/chehlcy/article/details/5164472 在启动文件我们看到了__main和用户写的main,这2个是有区别的,大概流程如下: 1、复位第一条指令:Reset_Handler PROC,这里指定为 LDR R0, =__main。表示调用库函数__main,当然,我们可以在__main前做点事情,比如PLL初始化等。 2、__main()的执行流程参考: 跟一下汇编,大概是__scatterload()- __rt_entry()- __user_setup_stackheap() 3、最后调用用户的main()函数。 4、可以不使用C
[单片机]
STM32 PWM调制信号关闭后端口电平不确定处理
简介 在使用STM32的PWM做为调制信号时,遇到开关调制信号关闭后其信号不确定的问题,影响信号的调制,收集了些资料在这归纳整理。 方法 当IO设置成PWM模式以后GPIO_ResetBits等设置语句就不管用了,如果不考虑时间点,调用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);定会产生关闭PWM后端口的电平不确定的情况。有2种办法可以解决: 1、如果使用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);应该在需要关闭时,先开放更新中断,然后在更新中断中调用其中一个函数,这样才能保证关闭的动
[单片机]
STM32单片机串口空闲中断+DMA接收不定长数据
在上一篇文章STM32单片机串口空闲中断接收不定长数据中介绍了利用串口空闲中断接收不定长数据,这种方式有一个问题就是串口每接收到一个字节就会进入一次中断,如果发送的数据比较频繁,那么串口中断就会不停打断主程序运行,影响系统运行。那么能不能在串口接收数据过程中不要每接收一个数据中断一次,只有在一帧数据接收结束完成后只中断一次? 用串口的空闲中断加上DMA功能,就可以实现每帧数据接收完成后只中断一次,而在数据接收过程中,由DMA存储串口接收到的每个字节。 关于串口的空闲检测和DMA在STM32参考手册中有详细介绍。 下面看如何初始化串口空闲中断和 DMA。 void uart2_init( u16 baud )
[单片机]
STM32待机唤醒操作
1.关于待机模式与断电模式的区别: 下图参考手册P37电源控制章节: stm32关于待机模式下,该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、 HSI和HSE振荡器也被断电。 SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。也就是说,待机模式下 ,STM32的除了备份区以外,待机电路中的比如唤醒电路和看门狗仍然是工作的,而普通IO口由于PLL、HSI、HSE的断电均高阻态无法工作。比如我们设置了WKUP唤醒,那么即使待机模式下,PA0仍具有检测上升沿实现唤醒功能(注意,待机状态下这种唤醒并不是外部中断,中断控制器都停止工作了!) 而断电模式则是只有后备区域供
[单片机]
基于STM32、FreeRTOS 实现硬件看门狗+软件看门狗监测多任务的方法
我们都知道硬件看门狗的目的:是用来监测系统,防止系统死机,并在死机的情况下使系统复位重启。 在RTOS操作系统中,如果任务(线程)较多,出现高优先级任务长时间占用CPU资源,低优先级任务长时间得不到执行这种想象,那么我们的系统就是具有Bug的系统。 如上描述,假如我们的线程没有死机,只是长时间得不到执行。在这种异常情况下,我们又不希望系统复位,只希望执行特定代码,那我们该如何来避免这种问题呢? Ⅰ关于看门狗 硬件看门狗:利用一个定时器计数电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时“喂狗”。 因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内喂狗,就使得看门
[单片机]
STM32 JTAGSWD禁用导致无法烧写
由于 STM32 的引脚功能较多,在为了方便硬件的使用,常会使用复用,重映射的功能,这里 主要提及的是 SWD 和 JTAG 端口的引脚对应出现的问题。 GPIO引脚重映射时,当调用GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)函数时,则改变指定管脚的映射,完全禁用(JTAG+SW-DP)。 不但关闭了JTAG还关闭了SWD,这样一来,如果你使用该方式来烧写程序,那么你下一次将面临这无法烧写程序的后果,下面就介绍解决问题的办法: 按着板子上面的复位键不放,若没有按键,就用夹子短路复位电容,这样单片机将停止程序的运行; 这时候点击Keil的下载,下方的“Bu
[单片机]
STM32串口通信基本原理详解
设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。 串行通信的分类 1、按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输; 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。 2、按照通信方式,分为: 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。 异步通信:不带时钟同步信号。比如:UART(通用异步
[单片机]
基于STM32的2μm高功率激光医疗仪控制器
2μm高功率激光医疗仪市场需求越来越大,而目人机交互模块前国内此类设备在控制上缺乏对系统安全和出光精准度的考虑。同时随着YY0505-2012医用电气电磁兼容标准于2014年的执行,设计符合YY0505-2012标准的医用设备已迫在眉睫。因此,本文采用模块化设计,设计了一种基于STM32的2μm光纤激光器医疗仪控制系统,将水冷单元的参数监控、电源模块的抗干扰设计、输出功率的校准等集成于一体。测试结果表明,系统可靠稳定,操作方便。 1. 系统功能和结构设计 按功能划分,医疗仪主要由2μm光纤激光器模块、精密水冷单元、STM32主控制器模块、人机交互模块等部分组成,结构如图1所示。控制器是医疗仪的大脑,负责整个设备的启
[单片机]