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(数据存储-内存). ...
随机推荐
- Ubuntu下安装Intellij IDEA和PyCharm
需要先安装JDK 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载 ...
- php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式浅谈
做 php 开发的应该都知道 php 运行模式概念吧,本文将要和大家分享的是关于php目前比较常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作 ...
- JSON缺包导致的错误
Json-lib 需要的 jar 包 commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar co ...
- C#入门经典-第15章Windows 编程
在使用Windows窗体时,就是使用System.Windows.Forms名称空间. .NET中的大多数控件都派生于System.Windows.Forms.Control类.
- gen_grant_exec.sql
set echo off feedback off verify off pagesize 0 linesize 120 define v_grantee = & ...
- 文件夹添加 IIS 应用程序池用户权限
http://serverfault.com/questions/81165/how-to-assign-permissions-to-applicationpoolidentity-account ...
- ReactiveCocoa Weak-Strong Dance
AC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strong ...
- Swift中异常处理(续集.正则)
正则表达式 1.创建正则表达式的规则 let pattern = "abc" 2.创建正则表达式对象 // 方式一:try方式 do { let regex = try NSReg ...
- Cannot find PHPUnit in include path phpstorm
This is the way to do it without using composer, and using your global phpunit.Phpunit now comes wit ...
- extjs最普通的grid
的 <script> Ext.onReady(function () { //1.定义Model Ext.define("MyApp.model.User", { ex ...