STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用
STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用
最近看了视频,里面有仿真,可以清楚看到GPIO口的数据变化,也想尝试下,DUG时却出现*** error 65: access violation at 0x40021000 : no 'read' permission,按照网上给的各种办法,包括修改memory map,以及其他各种办法,都无法解决,后来发现问题在下面这张图所示的位置:

这个图上红色框中的两个参数是我修改之后的,原来的值是软件安装之后的默认值:
Dialog DLL默认是DCM3.DLL
Parameter默认是-pCM3
应改为
Dialog DLL默认是DARMSTM.DLL
Parameter默认是-pSTM32F103RC
然后就可以愉快的仿真了。
仿真过程:
点击Debug,然后点击Peripheral菜单项,然后在General Purpose I/O这儿选择你要看的管脚,我这里选择GPIOA,完成后点击setup添加PORTA.0 就可以看GPIOA_Pin0的信号了:

借鉴这里的经验,在此感谢http://www.stmcu.org/module/forum/thread-599469-1-1.html
以下是一段GPIO口初始化及输出的使用的代码:
#include<stm32f10x.h>
int main(){
//定义一个GPIO初始化结构体,要在RCC使能之前定义,否则会报错
GPIO_InitTypeDef GPIO_InitStruct;
//初始化RCC并使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//设置要初始化的GPIO的管脚
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
//设置要初始化的GPIO的速度
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
//设置要初始化的GPIO的模式
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
//调用初始化函数,传入参数为GPIO初始化结构体的地址
GPIO_Init(GPIOA, &GPIO_InitStruct);
//在循环中给GPIO_Pin_1不断置位复位,也就是给高低电平,可以用来点亮对应管脚的led
while(){
//GPIO管脚置位函数,第一个参数为那个GPIO口,第二个为GPIO口的第几个引脚
GPIO_SetBits(GPIOA, GPIO_Pin_0);
//GPIO管脚复位函数,第一个参数为那个GPIO口,第二个为GPIO口的第几个引脚
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
}
return ;
}
以上是使用软件仿真的设置,那么硬件仿真(jlink)应该如何设置呢?

需要把右边的:
Dialog DLL默认是TARMSTM.DLL
Parameter默认是-pSTM32F103RC
保存之后点击Utilities,并进行如下设置:

然后就可以使用jlink仿真了。
STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用的更多相关文章
- Linux下开发STM32单片机
一开始学习51单片机就是用的MDK这个IDE软件,IDE软件虽然看起来直观好像更加容易入门(因为有界面看起来很形象),但是实际上IDE却是向我们这些入门人员隐藏了背后真实存在的过程,让我们以为编译就是 ...
- 龙邱STM32单片机用J-LINK下载无法被识别的解决方法
问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...
- 关于STM32单片机的IAP实现
基于STM32F103单片机的IAP实现(虽然该篇文章不会详细写出实现细节,但是会从一个全局的角度讲述,实际的实现细节只需根据datasheet即可完成). 一.基础概念 什么是IAP?IAP即在应用 ...
- 学习STM32单片机,从菜鸟到牛人就是这样简单(配视频资料)
我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...
- 51单片机和STM32单片机区别在那里
大部分朋友可能都知道51单片机和stm32单片机也知道一般入门会先学习51单片机在学习stm32单片机会简单一些,但是对于51单片机和stm32单片机的具体区别却不知道了,有些人觉得没必要,但是我个 ...
- STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准的问题
通过查看Sec的值和上次中断的差值计算的,虽然这个值是不准的 ,但实际上时间是准的, 原因如下:stm32在调试模式下虽然进断点之后程序停止了,但定时器的时钟还在走,计数器还在计数,若要在产生断点时计 ...
- STM32单片机复位后GPIO电平状态
stm32单片机gpio共有八种工作模式,如下图: stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入.这样的好处是: 1.降低了单片机的功耗 2.把gpio模式 ...
- STM32单片机是如何启动的?
STM32单片机是如何启动的? STM32中的内存 STM32中的内存包含两块主要区域:flash memory(只读).static ram memory(SRAM,读写).其中,flash mem ...
- STM32单片机和51单片机区别
单片机 / AVR / PIC / STM32 / 8051803189C5189S51 6905 单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存). ...
随机推荐
- 指针--摘自C++技术网 作者dx
“指针是什么?”“指针就是一种数据类型.”“你确定?”“那数据类型是什么?额,这个???类型就是类型,还能怎么解释嘛.”“指针有多少种?”“指针有好多种,比如整型指针,字符指针等等.”“指针是怎么确定 ...
- 为什么总是要求使用position的时候父类是relative
当我们使用position的时候,一般来说外面的框架是使用relative,里面的元素使用absolute的,这里有两个注意点: 1.如果我们不给父类一个position属性的时候,那么子元素就会以b ...
- java 接口的回调
Example6_3.java interface ShowMessage { void 显示商标(String s); } class TV implements ShowMessage { pub ...
- 最简单的epoll的使用范例 : 监听 标准输入 ,并将数据回显到终端
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/epoll.h> # ...
- 浅谈:html5和html的区别
什么是html5呢? html5最先由WHATWG(Web 超文本应用技术工作组)命名的一种超文本标记语言,随后和W3C的xhtml2.0(标准)相结合,产生现在最新一代的超文本标记语言.可以简单点理 ...
- Android Studio没有导包快捷键怎么办
Android Studio没有导包快捷键,那怎么办呢? 在使用Eclipse开发Android应用时,开发者往往会使用Shift+Ctrl+O快捷键来快速导入所有的包,和移除未使用的包.但这个快捷键 ...
- hibernate事务并发问题(脏读,不可重复读,幻读)
脏读 dirty read: 读了别的事务没有提交的事务, 可能回滚, 数据可能不对. 不可重复读 non repeatable read: 同一个事务里前后读出来的数据不一样, 被另一个事务影响 ...
- nginx多域名配置
方法一:多个.conf方法(优点是灵活,缺点就是站点比较多配置起来麻烦) 这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设: IP地址: 192.168.1.100域名1 exam ...
- iOS 一招搞定去掉字符串开始的0,尤其是针对时间格式化
// 2.利用整型自动去掉开头的0, 不要循环和判断prefix以及截取字符串- (NSString *)pp_formatDateWithArrYMDToMD;{ NSInteger mont ...
- 救援行动(save)
救援行动(save) 题目描述 Angel被人抓住关在一个迷宫了!迷宫的长.宽均不超过200,迷宫中有不可以越过的墙以及监狱的看守.Angel的朋友带了一个救援队来到了迷宫中.他们的任务是:接近Ang ...