STM32F103ZE IAR 5.3 + STLINK 問題

121 views
Skip to first unread message

Nick KUO

unread,
Jun 30, 2015, 10:59:28 PM6/30/15
to stm...@googlegroups.com

大家好 最近開始研究STM32版子
找了好久才找到這個論壇
以下是目前遇到的問題
還請各位幫忙看一下

這是STM32的官方範例
MAKE都沒問題
但在 Download and debug 會產生下圖








想請問有沒有人有過經驗
或當初遇到時怎麼解決? 
謝謝











/*
*********************************************************************************************************
*                                  
* 模块名称 : 主程序模块。
* 文件名称 : main.c
* 版    本 : V2.0
* 说    明 : 点亮LED入门例程。
* 修改记录 :
* 版本号  日期       作者    说明
* v2.0    2011-10-16 armfly  ST固件库V3.5.0版本。
*
* Copyright (C), 2010-2011, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/

#include "stm32f10x.h" /* 如果要用ST的固件库,必须包含这个文件 */

/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: c程序入口
* 形    参:无
* 返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
/* 
51单片机的CPU主频直接有外部晶振决定,无需任何配置即可开始操作IO口。
而STM32功能强大,CPU主时钟选项很多,而且必须配置后才能正常工作。

不过幸运的是,在进入main()之前,ST固件库中的启动文件已经帮我们设置好了CPU时钟。
我们暂时可以不管它,直接开始我们的第一个应用:点亮开发板上的LED1指示灯(PF6 = 0 点亮LED1)
*/
/* 
51单片机的IO口无需任何配置即可直接设置输出0和1。
STM32的GPIO有很多功能,可以关闭GPIO时钟降低功耗,可以设置为浮空输入、上拉输入、下拉输入、推挽输出、
开漏输出等多种工作模式,
CPU复位后,GPIO默认为GPIO时钟关闭和浮空输入,
因此我们需要使能GPIO时钟并配置GPIO为推挽输出模式,才能驱动LED
*/
GPIO_InitTypeDef init; /* 定义一个GPIO的结构体变量 */
/* 说明:GPIO_InitTypeDef 是ST固件库中定义的一个结构体变量类型
由于GPIO的参数很多,如果用函数形参设置每个参数,那么函数的形参太多了,因此ST使用了结构体变量,先
设置结构体变量每个成员的值,然后在执行GPIO设置
*/
/* 打开GPIOF的时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);

init.GPIO_Pin = GPIO_Pin_6; /* 我们要控制的LED是PF6, 这个参数需要设置为 GPIO_Pin_6 (1个常量宏) */
init.GPIO_Mode = GPIO_Mode_Out_PP; /* 设置为输出推挽模式, Out表述Output,PP = Pull Push 推挽 */
init.GPIO_Speed = GPIO_Speed_50MHz; /* 设置GPIO工作的最大频率,降低速度可以抑制GPIO信号跳变沿的振铃现象 */

/* 注意:之前的代码都是对CPU内部变量进行操作,还没有开始操作CPU的功能寄存器 */

/* GPIO_Init函数是ST固件库的函数,这一步将完成修改CPU寄存器的工作 
第1个参数 GPIOF 表示GPIO端口名,由于LED是PF6,位于GPIOF端口,因此此处是GPIOF 
第2个参数 &init 表示init结构体变量的指针
*/
GPIO_Init(GPIOF, &init); 
/* 如果单步调试,执行完GPIO_Init()后,你会发现LED灯已经亮了。这是因为GPIO输出寄存器缺省是0,当切换到
输出模式时,会立刻输出0电平,对于安富莱STM32开发板,0电平表示点亮LED */

/* 调用这个函数设置 PF6 = 1 熄灭LED1 */
GPIO_SetBits(GPIOF, GPIO_Pin_6);

/* 调用这个函数设置 PF6 = 0 点亮LED1 */
GPIO_ResetBits(GPIOF, GPIO_Pin_6);

while (1); /* 一个死循环语句,程序停在此处 */

/* 通过这个例子,记住2点:
(1) 使用任何外设,均需要开启对应外设的时钟。固件库中有专门的函数 
(2) 使用GPIO前先使用GPIO_Init() 配置GPIO工作模式,除非您正好需要GPIO作为输入模式
*/
}




Bee

unread,
Jul 3, 2015, 5:10:01 AM7/3/15
to stm...@googlegroups.com
Debugger型式沒有設對
Reply all
Reply to author
Forward
0 new messages