STM32基本系统主要有下面几个部分:
电源
无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空。
对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU。
用万用表测试供电电压是否正确,调试时最好用数字电源供电,以便过压或过流烧坏板子,电压最好一步一步从进线端测试到芯片供电端。
复位、启动选择
Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址
在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空;STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
用户闪存 = 芯片内置的Flash
SRAM= 芯片内置的RAM区,就是内存
系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序,这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。
用JTAG口或SWD模式烧写 选择从用户闪存启动。
用串口ISP模式烧写程序时时选择从系统存储启动
烧写接口
如果要减小插座的数量,就用SWD模式的仿真,在这个模式下,如果用JLINK只要四根线就可以了,这四根线分别是:3.3V、GND、SWDIO、SWCLK。
其中STM32的JTMS/SWDIO接JTAG口的TMS,STM32的JTCK/SWCLK接JTAG口的TCK。如果要用ULINK2,则再加多一条“NRST”,即5条。这个接口你可自行定义,在使用时用杜邦线跳接或做块转换接口板联接仿真器与目标板即可。
在烧写时出现了IDCODE如图有序列号,证明烧写接口是好的!也就是硬件调试通了。如没有也许焊接不过关,从新加固焊接芯片。
调试烧录失败的常见原因
目标芯片没有正确连接,不能正常工作 —— 解决方法:确保目标板的最小系统正确连接,芯片能正常工作:VDD、VDDA及VSS 、VDDS已全部正确连接,复位电路能够可靠复位,各复位源不互相影响。
芯片内原先烧录的代码影响了新的调试操作,芯片内原先烧录的代码出错,芯片上电运行,进入未定义状态,不能进入调试模式。芯片内原先烧录的代码启动了某些外设,或者将SWJ引脚配置为普通I/O口 —— 解决方法:选择芯片的BOOT0/BOOT1引脚从RAM启动,或先擦除芯片内代码。
芯片已被读/写保护,调试工具不能读写芯片内置的Flash —— 解决方法:先使用调试工具解除芯片的读/写保护。
关键字:STM32 滤波
引用地址:
STM32基本系统主要几个部分
推荐阅读最新更新时间:2024-11-07 20:45
基于STM32单片机的火控系统信号采集测试
火控系统是控制火炮瞄准和发射的系统,火控计算机是火控系统的核心,在完成火控解算进而引导高炮射击时具有重要作用。由于火控系统信号众多,状态复杂,对其关键信号的采集测试就显得尤为重要 . 普通信号采集测试装置具有结构复杂、造价昂贵、携带不便等特点,该方案结合最新型ARMv7系列STM32单片机,利用其丰富的外设接口和I/O资源,对某型火控系统的重点输出信号进行采集,存入板载Flash以备使用。另外,为便于使用和调试,还设计了CAN接口和RS-232串口。该信号采集盒大小为100 mm×65 mm,可由被测板提供电源信号,具有携带方便、使用简单的特点,对装备信号的实时采集具有重要的实用意义。 1总体设计方案 1.1总体设计框图
[单片机]
关于STM32程序仿真时卡死在default_handler的解决方法
问题描述:在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,U
[单片机]
基于单片机控制的程控有源滤波器电路
有源滤波器广泛应用于数字信号处理、通信、自动控制领域,但设计可变宽频带有源滤波器则比较困难。利用单片机控制参数可编程的双二阶通用开关电容有源滤波器,精确设置有源滤波器的中心频率f0,品质因数Q及有源滤波器的工作方式。 2 开关电容有源滤波器工作原理 开关电容有源滤波器的基本原理是在电路两节点之间接具有高速开关的电容器,等效于两节点之间连接一只电阻。图1(a)是一个有源RC积分器,图1(b)是采用一只接地电容C1和CMOS开关T1、T2替代输入电阻R1。图1(c)是不重叠的两相时钟脉冲,用于驱动T1、T2。时钟频率fCLK高于信号频率。当φ1为高电平时,T1导通(视短路)而T2截止(视开路),此时C1与输人信号V1相连并充电(如
[单片机]
重返STM32之---STM32定时器的误解
说是接触STM32都快3年了,说来也惭愧,很多东西都还没搞明白;应该也是因为英文水平有待提到的原因,不能正确的理解英文的含义,毕竟我们的语言思维是不一样的(找个借口吧哈哈)。 最近在用STM32的定时器,以前都是匆匆走过,由于自己想标准化自己的编程代码,所以这次很用心的用通用定时器写通用的延时函数,网上很多都是用的系统滴答时钟(SysTlck)来做的,但是想着自己要向操作系统方向发展,就不能用这个定时器了。 平时因为用的是滴答时钟来做的延时函数,就没怎么去深究;这次用通用定时来做的时候,发现问题一大把。首先就是定时器的时钟分频,第二个就是如何不用中断来实现定时。因为自己觉得对STM32很了解,所以就范范的写了代码,觉得自己肯定没问
[单片机]
解析STM32的库函数
意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作。通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程序的开发上,这便是ST推出这样一个开发包的初衷。 但这对于许多从51/AVR这类单片机的开发转到STM32平台的开发人员来说,势必有一个不适应的过程。因为程序开发不再是从寄存器层次起始,而要首先去熟悉STM32所提供的固件库。那是否一定要使用固件库呢?当然不是。但STM32微控制器的寄存器规模可不是常见的8位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间,并且对于程序后续的
[单片机]
spi 设置speed
//SPI 速度设置函数 //SpeedSet: //SPI_SPEED_2 2分频 (SPI 12M --sys 24M) //SPI_SPEED_8 8分频 (SPI 3M --sys 24M) //SPI_SPEED_16 16分频 (SPI 1.5M --sys 24M) //SPI_SPEED_256 256分频 (SPI 905.6K --sys 24M) void SPI1_SetSpeed(u8 SpeedSet) { SPI1- CR1&=0XFFC7;//Fsck=Fcpu/256 if(SpeedSet==SPI_SPEED_2)//二分频 { SPI1- CR
[单片机]
stm32之路:三 约好那一刻
万事开头难,前两天,我们已经建好了工程,写了点亮LED的程序,是不是感觉stm32也没想象中那么难?接下来,go on! 开发板上的LED在闪烁着,间隔是多长时间呢?能不能让它像钟表一样,一秒闪一下呢?答案是肯定的。今天我的目标,就是教它“读”秒~ 还是上一个函数,功能都有了,就是缺个精确的延时。说到“精确的延时”,大家首先想到的一定是定时器。对!就是它。翻开stm32的参考资料(Cortex-M3技术参考手册、Cortex-M3权威指南、STM32F10xxx数据手册,这些都可以),有个SysTick,就用它吧。一般人们把它叫做“系统节拍时钟”,或者叫“滴答定时器”,因为它可以可靠的提供一个精确的
[单片机]
ST最新开发工具为了解基于STM32 ARM Cortex-M3 MCU开方便之门
完整的低成本的评估开发工具通过图形界面探索微控制器的性能和功能 中国,2007年11月6日 — 意法半导体(纽约证券交易所:STM)今天公布了一个价格非常低廉的微控制器开发套件STM32 PerformanceStick,这套开发工具是近日推出的基于ARM Cortex-M3内核的STM32系列微控制器的配套产品。ST设计这套紧凑的开发工具是为了便于用户了解新微控制器的功能和性能,特别值得一提的是,用户可以通过一个图形界面查看微控制器在不同条件下的性能特性。为了鼓励和帮助设计工程师修改和重新编写应用程序源代码,工具包还含有示例应用软件和一套完整的Hitex软件工具。 STM32 PerformanceStick是一套功能完整
[单片机]