您好,欢迎来到 亚太电子   [登录]   [注册]
 商城首页   |  我的购物车   |  会员中心   |  关于商城   |  联系我们   |  中文版   |  ENGLISH
客服热线:13510980180
 最近成交记录
今天已成交:124 单 ,成交金额:37200
过去 3 天共成交:372 单 ,成交金额:111600
 当前用户在线
下午好,欢迎您!您是ASIA PACIFICA第 4340254 位访客
您的IP是:18.118.120.44 当前在线用户:598
总成交记录统计
总成交:299635 单 ,总金额:5993 万 元
现货库存:14143种 ,总值:7178 万 元 ,评价:11160
站内信息
关于我们
 
 
购物指南
 
 
 
 
 
支付/配送方式
 
 
 
 
购物条款
 
 
 
新手上路
 
 
 
会员协议
 
 
技术文章  
Keil IAR - Cortex M3 调试问题及解决方法(1)
时间:2013-10-9

--------------------------------------------------------------------------------
这个疑问的本源是:
    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中心的操控权之前,就初始化好硬件模块并发动运转,则仍然会发生与调试器的抵触。
--------------------------------------------------------------------------------
    依据以上的剖析,处理这个疑问的要害是,在调试器接收CPU中心的操控权之前,有必要中止一切能够主动运转模块的操作,使它们处于封闭状况,要做到这一点,能够有以下几种计划:
    1. 每次退出调试状况时,先中止一切模块的运转,比方履行该模块的DeInit()操作。
    2. 在main()函数开端时,不论各模块处于啥状况,先履行该模块的DeInit()操作,然后在程序中较晚的时刻或真实需求时再敞开相应的模块。这样确保在刚进入调试状况时,调试器能够有足够的时刻完结初始化和下载程序的操作。先履行该模块的DeInit()操作的意图是为了封闭哪些上一次操作敞开的模块。
    3. 调整BOOT0/BOOT1的设置,把发动形式改变为从内部SRAM发动,再联系手艺硬件复位。因为BOOT0/BOOT1的状况只在硬件复位时是有意义的,而调试器不做硬件复位,所以这样的设置不会影响调试器下载程序到Flash中,也不会影响在Flash中调试程序。
四、调试STM32程序时,某些象征位被调试软件意外铲除的疑问
    在调试的过程中,运用调试软件的寄存器或存储器显现窗口,能够很方便地检查外设寄存器的状况。
    许多兄弟都碰到过这样的疑问:在单步调试时一直不能在显现窗口看到某些象征位的改变,大概设置这些象征位的时分,窗口中却显现为0,不少人都过错地以为这是芯片的疑问。
    咱们晓得,不少STM32外设的状况寄存器位,能够经过对某些寄存器的读操作而铲除(例如I2C的I2C_SR1中的许多象征位),在调试过程中,每逢程序中止在设置的断点或单步中止时,调试软件都会主动地读出一切指定的寄存器和存储器中的内容,并改写窗口的显现,调试软件的这个读操作刚好铲除了那些象征位,造成了上面描绘的表象。
    有几个简略的方法处理这个疑问:
  1. 封闭寄存器或存储器显现窗口。
  2. 在寄存器或存储器显现窗口中不显现这些灵敏的寄存器。
  3. 不要把断点放在对这些灵敏的寄存器位操作的前面,以确保这些寄存器位不被调试软件意外地操作。
  4. 看官自个增加~~~~~
五、在运用STM32的外设时,因为IO口被用作复用功用,可是外设的初始化正确,GPIO口初始化正确,外设的时钟也已敞开,可是外设无法正常运转
    其中最要害的一项,大多数运用者多没有设置,即是某个IO口被用作外设的接口时,需求敞开IO口的复用功用的时钟,即进行外设、IO的时钟使能时,需求如下代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx | RCC_APB2Periph_AFIO, ENABLE);    /* GPIOx and AFIO clock enable */
x --- 为对应的GPIO口,如:A、B、C、D、E。    在运用时,必定要注意该关键!


分享到:
本页面信息由亚太电子用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。
上一篇:MEMS麦克风可增强音频系统的质量和可靠性
下一篇:MOS/场效应管使用中常见损坏等问题
相关阅读
日期: 2013/11/1
日期: 2013/10/30
日期: 2013/10/29
日期: 2013/10/29
日期: 2013/10/26

【 返回 】

 

Copyright © 2022 ALL Rights Reserved   版权所有:亚太电子有限公司
全国免费电话:13510980180   邮箱:sales01@asia-chips.com     www.asia-chips.com
手机二维码