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缓存即可决这个问题。
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缓存即可决这个问题。
举报