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口初始化、使用的更多相关文章

  1. Linux下开发STM32单片机

    一开始学习51单片机就是用的MDK这个IDE软件,IDE软件虽然看起来直观好像更加容易入门(因为有界面看起来很形象),但是实际上IDE却是向我们这些入门人员隐藏了背后真实存在的过程,让我们以为编译就是 ...

  2. 龙邱STM32单片机用J-LINK下载无法被识别的解决方法

    问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...

  3. 关于STM32单片机的IAP实现

    基于STM32F103单片机的IAP实现(虽然该篇文章不会详细写出实现细节,但是会从一个全局的角度讲述,实际的实现细节只需根据datasheet即可完成). 一.基础概念 什么是IAP?IAP即在应用 ...

  4. 学习STM32单片机,从菜鸟到牛人就是这样简单(配视频资料)

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...

  5. 51单片机和STM32单片机区别在那里

    ​大部分朋友可能都知道51单片机和stm32单片机也知道一般入门会先学习51单片机在学习stm32单片机会简单一些,但是对于51单片机和stm32单片机的具体区别却不知道了,有些人觉得没必要,但是我个 ...

  6. STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准的问题

    通过查看Sec的值和上次中断的差值计算的,虽然这个值是不准的 ,但实际上时间是准的, 原因如下:stm32在调试模式下虽然进断点之后程序停止了,但定时器的时钟还在走,计数器还在计数,若要在产生断点时计 ...

  7. STM32单片机复位后GPIO电平状态

    stm32单片机gpio共有八种工作模式,如下图: stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入.这样的好处是: 1.降低了单片机的功耗 2.把gpio模式 ...

  8. STM32单片机是如何启动的?

    STM32单片机是如何启动的? STM32中的内存 STM32中的内存包含两块主要区域:flash memory(只读).static ram memory(SRAM,读写).其中,flash mem ...

  9. STM32单片机和51单片机区别

    单片机 / AVR / PIC / STM32 / 8051803189C5189S51 6905 单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存). ...

随机推荐

  1. Ubuntu下安装Intellij IDEA和PyCharm

    需要先安装JDK 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载 ...

  2. php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式浅谈

    做 php 开发的应该都知道 php 运行模式概念吧,本文将要和大家分享的是关于php目前比较常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作 ...

  3. JSON缺包导致的错误

    Json-lib 需要的 jar 包 commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar co ...

  4. C#入门经典-第15章Windows 编程

    在使用Windows窗体时,就是使用System.Windows.Forms名称空间. .NET中的大多数控件都派生于System.Windows.Forms.Control类.

  5. gen_grant_exec.sql

    set echo off feedback off verify off pagesize 0 linesize 120 define v_grantee                 = & ...

  6. 文件夹添加 IIS 应用程序池用户权限

    http://serverfault.com/questions/81165/how-to-assign-permissions-to-applicationpoolidentity-account ...

  7. ReactiveCocoa Weak-Strong Dance

    AC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strong ...

  8. Swift中异常处理(续集.正则)

    正则表达式 1.创建正则表达式的规则 let pattern = "abc" 2.创建正则表达式对象 // 方式一:try方式 do { let regex = try NSReg ...

  9. 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 ...

  10. extjs最普通的grid

    的 <script> Ext.onReady(function () { //1.定义Model Ext.define("MyApp.model.User", { ex ...