单片机交流
直播中

吴湛

9年用户 947经验值
擅长:可编程逻辑
私信 关注
[问答]

在Keil5下如何对STM32单片机进行仿真

在Keil5下如何对STM32单片机进行仿真
如何去使用Keil5下的STM32单片机的GPIO口呢?

回帖(1)

高欢

2021-11-2 10:34:23
  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的信号了:
  
  以下是一段GPIO口初始化及输出的使用的代码:
  #include
  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仿真了。
  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(数据存储-内存)。 .。.
  随机推荐
  Scrapy爬取自己的博客内容
  python中常用的写爬虫的库有urllib2.requests,对于大多数比较简单的场景或者以学习为目的,可以用这两个库实现。这里有一篇我之前写过的用urllib2+BeautifulSoup做的一 。..
  T-sql 查询
  ------------------case---when-------的使用--------------------- select userAccount , eatingDate , c 。..
  SQL高级查询——50句查询(含答案) ---参考别人的,感觉很好就记录下来留着自己看。
  --一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表。并且添加相应的数据,数据要全面些。 其中Student表中,SId为学生的ID) ---------------- 。..
  BZOJ2730——[HNOI2012]矿场搭建
  bzoj2730 & world final 2011 H 1.题目大意:就是有一个无向图,让你在里面选择点,使得,无论哪个点没了以后,其他的点都能到达你选择的任何一个点,输出最少 选择几个点 。..
  修改EsayUi 中 tree 的原有样式,变为according 之类的样式 ,且子菜单显示在右侧
  easyUi 中 tree 框架的属性有: 修改原有展开样式代码如下: onExpand:function(node,param){ $(this).children(“li”)。 .。.
  LINUX下WIFI默认连接
  #! /bin/sh ifconfig wlan0 upiwconfig wlan0 key 123456iwconfig wlan0 essid “rat-linux”iwcon 。..
  .NET中各种不同的Timer之间区别
  System.Timer.Timer 根据命名空间看这个类貌似才是标准的Timer,它提供Interval属性和Elapsed事件。可以每隔一个时间周期触发一次Elapsed事件。在ThreadPoo 。..
  linux学习之(五)-linux文解压、压缩、安装
  查看一个文件的类型 命令: file 文件名 创建一个.tar类型的压缩包使用命令:tar -cvf [文件名].tar 目录 例:tar -cvf a.tar yasuo/ 。..
  npm install的时候出现unexpected end of file错误提示时的解决办法
  运行npm cache clean --force 清空npm缓存即可决这个问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分