STM32 无法使用IAR下载程序问题

发布者:落寞梦惊最新更新时间:2017-02-07 来源: eefocus关键字:STM32  IAR  下载程序 手机看文章 扫描二维码
随时随地手机看文章

一开始建立了工程,然后程序下载都很正常。不知道什么情况自己下载代码之后,再重新下载代码无法成功。



我按照提示找了一下FlashStm32f30x8.flash这个文件,却发现IAR的目录下没并没有。又怀疑是IAR文件丢失。

重新安装IAR,却发现问题仍然继续.   ~~~~感觉像是芯片坏了~~~


于是通过STVP工具,读取一下。 奇迹发生了,竟然可以读取程序。  嗯~~那可以排除芯片的问题。

好吧,那我重新用IAR下载应该可以吧。  于是重新下载程序, 晕~~~居然还是弹出那个错误。

难道自己的程序竟然会引起这样的错误???


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


于是通过STVP将FLASH全部清空,再用IAR下载调试。嗯~~~成功了....


既然成功了,那就用F5全速跑一下吧。  晕,程序跑飞了。。。。。。。。。。


此时,我再用IAR下载时候,发现又弹出刚开始的错误了。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


再通过STVP将FLASH全部清空,再用IAR下载调试,一步一步调试。发现程序跑到ST官方的库文件里面就出不来了。

继续跟踪,原来库在GPIO_OType参数的时候,没有判断值,直接就赋值给变量了.

我的代码中确实没有对GPIO_OType变量进行赋值,因为感觉该口作用串口的输入输出应该不需要赋值.

后面对该值赋值后,问题再也没有重现了.

代码如下:


  1. GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,GPIO_AF_7);  

  2. GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_7);  

  3.   

  4.   

  5. //TX PIN  

  6. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  

  8. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  

  9. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  

  10. GPIO_Init(GPIOA,&GPIO_InitStructure);  

  11.   

  12. //RX PIN      

  13. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;    

  14. GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;  

  15. GPIO_Init(GPIOA,&GPIO_InitStructure);  



看来库,还是得小心使用,否则出问题的时候.查死你啦~~~


关键字:STM32  IAR  下载程序 引用地址:STM32 无法使用IAR下载程序问题

上一篇:STM32F030系列UID
下一篇:STM32F30X SYSTICK做非精确的delay功能

推荐阅读最新更新时间:2024-03-16 15:33

巧用外设复位修改只读寄存器
有STM32开发者用到STM32F429芯片开发产品,并用到其中的CAN外设。在CAN应用过程中有个专门针对收发出错情况进行次数统计的两个计数器,其值通过错误状态寄存器CAN_ESR中的REC 和TEC 两个字段来体现,CAN硬件会根据错误数据大小做适当响应或处理。 根据寄存器描述得知,TEC 和REC 的值在这个寄存器里面是只读的。而此时的STM32用户有个强烈的需求,就是期望能适时地对这两个出错记录字段做清零。他自己也尝试编写一些代码想让二者清零,均以失败告终,便邮件咨询有无解决办法。 我们在阅读CAN_ESR寄存器内容时倒有个发现,即该寄存器的复位值是0x00000000。 也就是说,芯片每次复位后其值一定是0,
[单片机]
巧用外设复位修改只读寄存器
STM32中GPIO的8种工作模式!
在Cortex-M3里,对于GPIO的配置种类有8种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 I/O端口位的基本结构 1、推挽输出 推挽 电路 是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正
[单片机]
<font color='red'>STM32</font>中GPIO的8种工作模式!
STM32使用FSMC驱动8080时序CH395的一些问题
CH395L是带并口的版本,支持串口、SPI、并口三种模式,网卡类似于内置TCP协议的W5500,用户只需读取一些参数设置socket就可以完成网络通信。CH395具有并口模式,这是个特色,在对速度要求高的场合,并口比SPI等串行方式快很多,在使用stm32f103以fsmc硬件并口驱动ch395时参考秉火和战舰的驱动LCD的例程,因为都是8080时序的设备,方法相似。 在配置过程中,发现在以杜邦线连接ch395模块的情况下, readWriteTiming.FSMC_AddressSetupTime = 0x03; readWriteTiming.FSMC_DataSetupTime = 0x08; 这两
[单片机]
<font color='red'>STM32</font>使用FSMC驱动8080时序CH395的一些问题
STM32关于优先级设定的理解 NVIC_SetPriority()
Systick模块初始化配置函数(Systick_config)中设定模块中断优先级的函数为: NVIC_SetPriority((SysTick_IRQn, (1 __NVIC_PRIO_BITS) - 1); 参数SysTick_IRQn为systick基址,这个没什么好说的 关键在参数 (1 __NVIC_PRIO_BITS) - 1);这个参数即占先优先级值,其中—NVIC_PRIO_BITS是stm32.h中的宏定义,库函数默认为4,表示用4位表示占先优先级,因为m3内核只有4位用来表示占先优先级和响应优先级,那么响应优先级就剩下0位了,也就是没有响应优先级之分, 按照上式计算若NVIC_PRIO_BIT
[单片机]
STM32如何配置DMA?
一、DMA简介 1、DMA简介 DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式。 CPU有转移数据、计算、控制程序转移等很多功能,但其实转移数据(尤其是转移大量数据)是 可以不需要CPU参与 。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,再加上一些控制转移的部件就可以完成数据的拷贝。 DMA就是基于以上设想设计的,它的作用就是解决大量数据转移过度消耗CPU资源的问题。有了DMA使CPU更专注于更加实用的操作--计算、控制等。 2、DMA的工作原理 DMA的作用就是实现数据的直接传输,而去掉了传统数据传输需要CPU寄存器参与的环节 ,主要涉及
[单片机]
基于STM32 MCU的太阳能-LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等
[电源管理]
基于<font color='red'>STM32</font> MCU的太阳能-LED街灯解决方案
STM32实战1:按键点亮LED小灯 hh
#include sys.h #include key.h void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//初始化时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPI
[单片机]
如何有效地使用串口通讯接收数据
引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了! 这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,如何接收不定长的数据呢? DMA简介 题外话:其实,上面的问题是很有必要思考一下的,不断思考,才能进步。 什么是DMA DMA :全称Direct Memory Access,即直接存储器访问
[单片机]
如何有效地使用串口通讯接收数据
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved