您的位置 首页 设计

STM32在调试过程中常见问题和解决办法

STM32微控制器系列–常见问题St意法半导体http:wwwy-eccom(1)已经发表的有关STM32的技术资料有哪些?(2)STM32的数据手册和技术参

STM32微操控器系列–常见问题 St意法半导体http://www.y-ec.com

(1) 现已宣布的有关STM32的技能材料有哪些?
(2) STM32的数据手册和技能参阅手册有什么别离?
(3) STM32有几种封装方法?是否契合RoHS的要求?
(4) 有哪些开发东西能够用于STM32的开发?
(5) 是否有简易的方法下载程序代码到STM32的内部Flash?
(6) 哪里有STM32上各种外设的运用例程和编程材料?
STM32微操控器系列–常见问题解答
(1) 现已宣布的有关STM32的技能材料有哪些?
现已宣布的有关STM32的技能材料有以下一些:
STM32F103xx增强型系列数据手册 英文下载 中文下载
STM32F101xx根本型系列数据手册 英文下载 中文下载
STM32F10xxx技能参阅手册 英文下载 中文下载
STM32F10x闪存编程手册 英文下载 中文下载
近20篇STM32运用笔记 STM32运用笔记汇总
STM32选型手册 英文下载
STM32的函数库和演示程序:包含函数库、USB开发套件、评价板程序和Flash Loader等点击这儿阅览下载
(2) STM32的数据手册和技能参阅手册有什么别离?
有关STM32的性能参数和运用方法的技能材料主要有两类,一类称为数据手册,另一类称为技能参阅手册或简称参阅手册。
数据手册是有关产品技能特征的根本描绘,包含产品的根本装备(如内置Flash和RAM的容量、外设的数量等),管脚的数量和分配,电气特性,封装信息,和定购代码等。
技能参阅手册是有关怎么运用该产品的详细信息,包含各个功用模块的内部结构、一切或许的功用描绘、各种作业方式的运用和寄存器装备等详细信息。
通常在芯片选型的初期,首要要看数据手册以评价该产品是否能够满意规划上的功用需求; 在根本选定所需产品后,需求观察技能参阅手册以确认各功用模块的作业方式是否契合要求;在确认选型进入编程规划阶段时,需求详细阅览技能参阅手册获悉各项功用的详细完结方法和寄存器的装备运用。在规划硬件时还需参阅数据手册以取得电压、电流、管脚分配、驱动才干等信息。
 
(3) STM32有几种封装方法?是否契合RoHS的要求?
STM32产品系列现在有5种封装方法,它们别离为:
封装称号 管脚数目 管脚距离(mm) 封装尺度(mm)
LxWxH
VFQFPN36 36 0.5 6x6x0.9
LQFP48 48 0.5 9x9x1.5
LQFP64 64 0.5 12x12x1.5
LQFP100 100 0.5 16x16x1.5
LFBGA100 100 0.8 10x10x1.5
一切上述封装方法均为ECOPACK?封装并契合RoHS的要求。ECOPACK是ST的注册商标,概况请见ST的网站。
 
(4) 有哪些开发东西能够用于STM32的开发?
点击这儿检查ST网站上有关STM32开发东西的中文介绍。
这篇简介文章–《STM32F10x开发调试东西一览》–包含了在我国取得STM32东西的信息。
 
(5) 是否有简易的方法下载程序代码到STM32的内部Flash?
一切STM32产品都内置一个体系存储区,用于放置一段程序,这段程序能够经过STM32的USART1接口接纳指令,并履行对内部Flash的擦除和烧写等操作。这段程序能够经过设置芯片上相应管脚(BOOT1和BOOT0)的状况,在芯片复位后进入。
因为这段程序的功用是在芯片发动后经过USART加载程序到内置Flash存储器,所以称其为Flash Loader。一切STM32产品在出厂时都已预置了Flash Loader,用户只能经过设置BOOT1和BOOT0来运用它,而没有方法擦除或修正它。
运用Flash Loader的方法,请参阅下述文件:
运用笔记: STM32F101xx 和 STM32F103xx体系存储器发动方式
Windows演示软件: STM32F101xx 和 STM32F103xx Flash加载程序演示
演示软件运用手册: STM32F101xx 和 STM32F103xx Flash加载程序演示
STM32中的Flash Loader运用USART1做为通讯端口,它运用8个数据位、1个中止位和偶校验,具有主动波特率检测功用。
 
(6) 哪里有STM32上各种外设的运用例程和编程材料?
STM32的函数库中包含了许多例程,函数库和运用例程能够在ST的网站上免费下载。一切函数库和运用例程均供给C源程序,用户能够运用在任何的开发环境下。
在ST的网站上能够免费下载“STM32 USB开发套件”。
在ST的网站上能够免费下载“STM3210B-EVAL评价板软件”。
在ST的网站上能够免费下载近20篇STM32运用笔记。
STM32调试进程中常见的问题及处理方法 一、 在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.”
处理方法: Keil MDK默许运用ULINK仿真器下载程序,在“Project —>Option for Target xxx —>Utilities选项卡”下把编程所运用的仿真器改为相应的类型即可。
二、 编译工程时提示如下信息:
main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __GetBASEPRI (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __RESETFAULTMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __RESETPRIMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __SETFAULTMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __SETPRIMASK (referred from stm32f10x_nvic.o).
处理方法:工程短少“cortexm3_macro.s”文件,把cortexm3_macro.s和STM3210x.s悉数增加到工程即可。
三、调试器不能衔接到STM32的问题与处理方法
许多人都碰到过调试器不能衔接到STM32的问题,不论是IAR的J-Link仍是Keil的ULink,或者是ST的ST-Link。呈现这个问题时,调试软件会提示不能树立与Cortex-M3的衔接,或提示不能下载程序,或提示找不到要调试的设备等。
这样的问题都是发生在调试那些能够在CPU不干涉的时分主动运转的模块、或在调试低功耗方式的程序的时分。所谓“能够在CPU不干涉的时分主动运转的模块”包含:DMA、定时器、接连转化方式下的ADC、看门狗等模块。
——————————————————————————–
这个问题的本源是:STM32F100系列http://www.y-ec.com/cpcp/class/
1. 调试器需求在RAM内履行一段程序,对Flash进行擦写操作,假如不中止这些主动运转的模块,它们会搅扰程序在RAM中的履行,致使下载失利。比方DMA模块被装备为不停地复制一段数据区,而调试器刚好需求运用DMA数据传输的方针区域,这时DMA的操作将会与调试器的操作发生抵触。再比方,假如发动了看门狗而没有履行硬件复位,则在下次调试器需求下载程序时,看门狗超时将触发芯片复位,导致下载操作失利。
2. 低功耗是经过中止CPU的时钟而完结,JTAG调试是经过与CPU的通讯完结,中止了CPU的时钟致使调试器会失掉与CPU的通讯。
——————————————————————————–
有人说“我中止调试的时分,这些模块现已中止了运转,应该不会搅扰到后续的调试”,这个问题要从几方面看:
1. 调试器是经过中止CPU中心的时钟来中止被调试程序的运转,实际上被调试芯片的硬件模块并没有被复位,它们还处于使能状况,那些能够主动运转的模块仅仅处于暂停状况,一旦康复了时钟之后,它们仍会持续运转。
2. 现在常用的调试软件,不论是IAR EWARM仍是Keil MDK,调试软件界面上的”复位”按钮都不能对芯片履行硬件的复位,这个”复位”按钮只能对芯片内的程序履行软件复位,即把运转指针从头指向复位地址。
3. 运用板上的复位按钮能够手动地进行硬件复位,使一切模块(包含那些能够主动运转的模块)中止作业并康复到复位状况。可是当调试器需求操控CPU之前,它需求先为CPU中心供给时钟,然后需求较长的一段时刻做一些初始化的动作,然后才干接收CPU中心的操控权。在调试器为CPU中心供给时钟之后,用户程序就现已开端运转起来,假如用户程序在调试器接收CPU中心的操控权之前,就初始化好硬件模块并发动运转,则仍然会发生与调试器的抵触。
STM32F101系列http://www.y-ec.com/cpcp/class/?31.html
——————————————————————————–
依据以上的剖析,处理这个问题的要害是,在调试器接收CPU中心的操控权之前,有必要中止一切能够主动运转模块的操作,使它们处于封闭状况,要做到这一点,能够有以下几种计划:
1. 每次退出调试状况时,先中止一切模块的运转,比方履行该模块的DeInit()操作。
2. 在main()函数开端时,不论各模块处于什么状况,先履行该模块的DeInit()操作,然后在程序中较晚的时刻或真实需求时再敞开相应的模块。这样确保在刚进入调试状况时,调试器能够有足够的时刻完结初始化和下载程序的操作。先履行该模块的DeInit()操作的意图是为了封闭哪些上一次操作敞开的模块。
3. 调整BOOT0/BOOT1的设置,把发动方式改变为从内部SRAM发动,再结合手艺硬件复位。因为BOOT0/BOOT1的状况只在硬件复位时是有意义的,而调试器不做硬件复位,所以这样的设置不会影响调试器下载程序到Flash中,也不会影响在Flash中调试程序。
四、调试STM32程序时,某些标志位被调试软件意外铲除的问题
在调试的进程中,运用调试软件的寄存器或存储器显现窗口,能够很方便地检查外设寄存器的状况。
许多朋友都碰到过这样的问题:在单步调试时一直不能在显现窗口看到某些标志位的改变,应该设置这些标志位的时分,窗口中却显现为0,不少人都过错地以为这是芯片的问题。
咱们知道,不少STM32外设的状况寄存器位,能够经过对某些寄存器的读操作而铲除(例如I2C的I2C_SR1中的许多标志位),在调试进程中,每逢程序中止在设置的断点或单步中止时,调试软件都会主动地读出一切指定的寄存器和存储器中的内容,并改写窗口的显现,调试软件的这个读操作刚好铲除了那些标志位,造成了上面描绘的现象。
有几个简略的方法处理这个问题:STM32F102系列http://www.y-ec.com/cpcp/class/?46.html
1. 封闭寄存器或存储器显现窗口。
2. 在寄存器或存储器显现窗口中不显现这些灵敏的寄存器。
3. 不要把断点放在对这些灵敏的寄存器位操作的前面,以确保这些寄存器位不被调试软件意外地操作。
4. 看官自己增加~~~~~
五、在运用STM32的外设时,因为IO口被用作复用功用,可是外设的初始化正确,GPIO口初始化正确,外设的时钟也已敞开,可是外设无法正常运转
其中最要害的一项,大多数运用者多没有设置,便是某个IO口被用作外设的接口时,需求敞开IO口的复用功用的时钟,即进行外设、IO的时钟使能时,需求如下代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx | RCC_APB2Periph_AFIO, ENABLE);
x — 为对应的GPIO口,如:A、B、C、D、E。
在运用时,必定要注意该关键!
STM32F105系列http://www.y-ec.com/cpcp/class/?33.html
STM32F107系列http://www.y-ec.com/cpcp/class/?34.html
六、用JLINK下载完程序后,程序开端运转并在“Build Output”栏多出如下信息:
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: TPIU fitted.
* JLink Info: ETM fitted.
* JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
Application running …
在“Project —>Option for Target xxx —>Utilities—>Settings”下,去掉“Reset and Run”复选框即可。STM32F103系列http://www.y-ec.com/cpcp/class/?32.html

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/259962.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部