从0使用keil5软件仿真调试GD32F305

13 篇文章 0 订阅
订阅专栏
10 篇文章 2 订阅
订阅专栏

搜集到的一些资料:

RTT提供的F303的库
GD32 BSP制作1
RTT制作GD32系列BSP
移植RTT到GD32
兆易创新资料下载
GD32标准库移植 (兆易创新官网只提供了标准库) 标准库点灯
GD32芯片包下载 (和固件库包不一样)下载慢的话也可以官网中找GD32F30x AddOn
GITHUB上的RTT和GD32的BSP制作
GD32F305的例程

其实看完上面这些也没必要继续向下看了·······

下面是记录的一些技巧和过程细节

一、新建工程及编译

将下载下来的keil中的芯片包GigaDevice.GD32F30x_DFP.2.2.0.pack,安装上,否则新建项目的时候没办法选择芯片型号

然后GD32F30x_Firmware_Library_V2.1.3\GD32F30x_Firmware_Library_V2.1.3\Template\Keil_project中keil工程,不是为了用它,主要是为了在新建工程的时候复制一下它上面的路径,如下图
在这里插入图片描述
还有一些配置
在这里插入图片描述
至于上图中的包怎么选,在开始提到的链接里面有

还有一些文件夹的新建及文件新加,如下图
在这里插入图片描述
这样能看到文件的命名和分类了,当然也可以按照自己的风格进行重建,鼠标放到文件上,还可以显示文件的位置,便于下图添加文件(右击选中工程,选择Manage Project Items出来)
在这里插入图片描述
文件添加完成后,注意把Utilities文件夹下面的gd32f307c_lcd_eval.c屏蔽掉,否则找不到里面头文件,其实也能手动添加一下,但是我添加完成以后看了一下源文件,里面只是一些lcd相关的文件,一般用不到,屏蔽方法如下图,右击选择属性后,把include in target build前面的勾去掉就可以了
在这里插入图片描述

上面弄完点击编译按说可以通过了,但是main文件里面的好多函数找不到,应该是根据提供的标准库函数又向上封装了一层,所以就替换了,没有用他的main里面的内容

小技巧,替换他关于串口相关的函数时,可以去GD32F30x_Firmware_Library_V2.1.3\GD32F30x_Firmware_Library_V2.1.3\Examples\USART这个路径下面查看例程源文件,其它外设添加方法类似

下面是实测可以编译通过的led闪烁和串口打印示例

#include "gd32f30x.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
#include "gd32f30x_gpio.h"


void led_spark(void)
{
    static __IO uint32_t timingdelaylocal = 0U;

    if(timingdelaylocal){

        if(timingdelaylocal < 500U){
            gpio_bit_set(GPIOC, GPIO_PIN_6);
        }else{
            gpio_bit_reset(GPIOC, GPIO_PIN_6);
        }

        timingdelaylocal--;
    }else{
        timingdelaylocal = 1000U;
    }
}



void GPIO_Config(void)
{
	rcu_periph_clock_enable(RCU_GPIOC);
	/*LED*/
  gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
}

void USART_Config(void)
{
	/* enable GPIO clock */
	rcu_periph_clock_enable(RCU_GPIOA);

	/* enable USART clock */
	rcu_periph_clock_enable(RCU_USART0);

	/* connect port to USARTx_Tx */
	gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);

	/* connect port to USARTx_Rx */
	gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);

	/* USART configure */
	usart_deinit(USART0);
	usart_baudrate_set(USART0, 115200U);
	usart_receive_config(USART0, USART_RECEIVE_ENABLE);
	usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
	usart_enable(USART0);
	
	printf("a usart transmit test example!");
}

int main(void)
{
    /* configure systick */
    systick_config();
    /* initilize the LEDs, USART and key */
    GPIO_Config();
	  USART_Config();
    
    /* print out the clock frequency of system, AHB, APB1 and APB2 */
    printf("\r\nCK_SYS is %d", rcu_clock_freq_get(CK_SYS));
    printf("\r\nCK_AHB is %d", rcu_clock_freq_get(CK_AHB));
    printf("\r\nCK_APB1 is %d", rcu_clock_freq_get(CK_APB1));
    printf("\r\nCK_APB2 is %d", rcu_clock_freq_get(CK_APB2));

    while (1){
			led_spark();
      delay_1ms(1);
    }
}

/* retarget the C library printf function to the USART */
int fputc(int ch, FILE *f)
{
    usart_data_transmit(USART0, (uint8_t)ch);
    while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));

    return ch;
}

二、仿真及调试查看

一仿真就报了一个看似很正常的错误,如下图(大概意思就是没有那个寄存器读写的权限)
在这里插入图片描述
网上一查一大堆,都说改一下下图指的位置的内容就行
在这里插入图片描述
我按照网上说的把里面的数都快穷举了一遍,也是不行,后来发现他们都没说到根上,根就是keil5不支持M4内核的设备,和同事核实了一下,他也是这么说的,然后根据这个线索找了个 靠谱答案
官网信息参考

找到原因了,接下来就找解决方法,不能别人说不行就不行啊,中间又扒拉了一下gd32官网提供的工具和第三方在线仿真工具,无果

找找找,找到一个看似可以解决的 答案

试了大佬方法的第二种,不要问为什么没试第一种(已经穷举了)
倒是不出现开始的错误了,但是总是卡到一段没编译的程序里面,然后看了一下那段程序,是因为宏定义导致变灰的,所以就把#define __SYSTEM_CLOCK_IRC8M (uint32_t)(__IRC8M)放开了,然后把//#define __SYSTEM_CLOCK_120M_PLL_HXTAL (uint32_t)(120000000)屏蔽了(修改了一下时钟源),现在错误如下图(一直卡在这里出不去):
在这里插入图片描述
然后想着试试大佬的第三个方法,弄了一下,程序直接一仿真就跑起来来了,不过还是卡在上图那个地方,貌似情况更差了,然后试一下改改.ini文件的寄存器映射内容,去看数据手册

按着手册改的文件如下,还发现gd32f305咋没有AHB2啊
map 0x40000000, 0x4000FFFF read write // APB1
map 0x40010000, 0x400157FF read write // APB2
map 0x40018000, 0x5003FFFF read write // AHB1
map 0x60000000, 0xA0000FFF read write // AHB3

然后发现没啥用,看来不是这个原因啊,不过映射的确不一样,往好处想这是原因之一吧

现在有一瞬间有个想法,要不要把第一步穷尽的做法再搞一遍呢(先找找原因吧还是)

看了一下程序,卡在这好像是因为内部时钟一直不稳定,去了试试呢
去掉之后不卡在那了,但是卡在下面的地方了
在这里插入图片描述

找原因的过程在arm社区找到了下面的一个会议介绍,有兴趣的可以 点击观看
在这里插入图片描述

再接着看,去网上查了一下,这个问题是因为串口的时钟不稳定导致的,这倒是符合前面的倒数第二个问题,所以就把串口相关的去了,奇迹出现,可以仿真了
在这里插入图片描述
下一步就是看引脚的变化了,虽然看不了串口,看看模拟出来的引脚电平也能解决一部分逻辑啊

还没看那,又发现一个错误,如下图
在这里插入图片描述
查资料的时候又发现个有意思的事情,解决问题竟然还能发论文
在这里插入图片描述

上面问题在 文章里面找到了原因,是注意映射空间不要超过0x08000000,否则调试时会提示错误:“*** error 129: MapMemmap size truncated to 128MB”,无解

接着看io口电平,一直显示undefined identifier,就算了,直接在控制引脚那里放个全局变量,然后如下图在逻辑分析器里面看变化就行了
在这里插入图片描述
上图可以看出时间也是差不多的

关于中断和其它外设就不过多介绍了,感兴趣的可以看大佬们写的文章

在这里插入图片描述

在这里插入图片描述

Keil软件仿真调试.doc
12-03
Keil软件仿真调试.doc
Keil_IDE中配置GD32开发环境.pdf
04-05
ARM 公司当前已经为 GD 制作了相关的插件,可以直接在 4.x和5.x系列的软件上安装使用。安装 MDK 的补丁 MDK-ARM_AddOn_GD32Fxxx然后再去安装 Keil.GD32F1xx_DFP.1.0.1 for5.x 的补丁,安装完成后就能够直接选到 GD的型号了。
Keil5-GD32芯片包(超详细)
07-03
Keil5-MDK,GD32芯片包 有F1、F3、F4等系列芯片包 有E10、E23\E50等系列芯片包 有L23、W51等系列芯片包
GD32F30x创建工程前的准备工作(下载资料,配置环境)
最新发布
tym23081329的博客
06-01 485
就简单的一些准备操作,创建工程制作中
修改gd32f305时钟
weixin_38743772的博客
05-31 1125
硬件外部时钟为8MHz,官方demo文件为25MHz,基于此修改时钟配置。
stm32f105移植到gd32f305笔记
qq_41705838的博客
03-20 4467
背景知识 stm32f105芯片和gd32f305芯片都有2个内部CAN,stm32f105芯片是CAN1和CAN2,gd32f305芯片是CAN0和CAN1,stm32f105芯片的CAN1和gd32f305芯片的CAN0是对应关系,stm32f105芯片的CAN2和gd32f305芯片的CAN1是对应关系。 为了描述方便和避免误解,如果没有特殊说明,用CANa来表述stm32f105芯片的CAN1和gd32f305芯片的CAN0,用CANb来表述stm32f105芯片的CAN2和gd32f305芯片的C
GD32软件调试——KEIL5软件仿真时的报错配置
Bule009的博客
01-19 1707
运行GD32项目工程时,需要对代码进行仿真调试,发现软件调试会报错,提示“the selected device has no configuration options ”。根据target当前页面,获取到的芯片型号:GD32F103C8。2)dialog dll:配置为DARMSTM.DLL;3)根据获取到的芯片型号配置为:GD32F103C8;1、选择打开Debug调试配置——target。点击仿真调试按钮,输出运行结果,不报错了。1)use simulator需要勾选;
gd32与tmp423的使用以及mdk5的软件仿真
qq_41584065的博客
03-03 1906
本文主要介绍在GD32f103RE上使用TMP423,以及MDK5的软件仿真使用
GD32F303CB仿真连接不上问题
qq_34152804的博客
04-16 359
【代码】GD32F303CB仿真连接不上问题。
GD32_ISP_Console(Windows)软件
03-09
GD32_ISP_Console(Windows)软件, Windows系统下的串口ISP控制台工具,用于串口烧录GD MCU Flash数据
GD32在keil5上的pack安装包
09-12
GD32F10X,GD32F1X0的安装包,找了一下,亲测使用OK,方便使用。。。。。。。。。。。。。。。。。。。。。。
GD32 USB鼠标例程
09-01
基于GD32 的USB开发例程, 实现了鼠标功能, 并且利用本身的触控功能, 实现触摸鼠标功能
GD32F303开发资料.rar
09-30
GD32F303芯片手册、GigaDevice.GD32F30x_DFP.1.0.1.pack、keil安装包、IAR安装包、GD32F303工程代码
GD32系列微控制器入门开发指南 V1.0.pdf
12-06
GD32系列微控制器入门开发指南 目录 1.GD32 MCU开发资料下载 2.GD32 MCU开发环境搭建 3.GD32 MCU烧录说明 4.固件库使用方法和启动流程介绍 5.GD32 MCU常见外设介绍 6.GD32 MCU FPU使用方法 7.GD32 MCU选项字节设置及解除方法 8.分散加载说明
Keil 软件仿真的串口调试技巧
08-13
在单片机开发中,串口调试是必不可少的环节,Keil软件仿真提供了一种高效且便捷的方法,尤其适用于C51和汇编语言的程序调试。本文将深入探讨如何利用Keil软件仿真功能来调试51单片机的串口程序,无需额外的硬件...
Keil串口软件仿真调试
08-03
转载文章的基础上加入部分自己的整理,希望对大家有用。
有关Keil软件仿真的51单片机串口调试技巧
07-14
下面介绍一种利用Keil软件仿真功能来实现51单片机串口调试用户程序的方法。使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
keil5软件仿真调试教程
07-27
您好!关于Keil5软件仿真调试教程,我可以为您提一些基本的指导。请注意,以下是一般性的教程,具体步骤可能会根据您的具体需求和硬件平台而有所不同。 1. 打开Keil5软件:在安装好Keil5之后,双击打开软件。 2. 创建新工程:点击"Project"菜单,选择"New µVision Project"。选择一个保存工程的目录,并为工程命名。 3. 选择芯片型号:在打开的对话框中,选择您正在使用的芯片型号。 4. 添加源文件:右键点击"Source Group",选择"Add New Item to Group 'Source Group'"。然后选择您要添加的源文件。 5. 编写代码:在Keil5的编辑器中编写您的代码。您可以使用C语言或汇编语言进行编程。 6. 配置调试选项:点击"Debug"菜单,选择"Options for Target"。在弹出的对话框中,选择您使用仿真器,并配置相关的选项。 7. 构建工程:点击"Project"菜单,选择"Build Target"。这将编译您的代码,并生成可执行文件。 8. 设置断点:在源代码中选择您想要设置断点的行,在行号的左侧单击即可设置断点。断点用于在调试过程中暂停程序的执行。 9. 启动仿真调试:点击"Debug"菜单,选择"Start/Stop Debug Session"。这将启动仿真调试过程,并将程序加载到目标设备上。 10. 运行程序:在仿真调试过程中,您可以使用调试工具栏上的按钮来控制程序的执行。您可以单步执行、运行到断点或者暂停程序的执行。 以上是一个基本的Keil5软件仿真调试的教程。请注意,具体的步骤和选项可能因不同版本的Keil软件而有所不同。如果您需要更详细的教程或有特定的问题,请提供更多的信息,我将尽力帮助您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • 制作积累 50篇
  • RF 6篇
  • ESP32 10篇
  • 医疗方面 15篇
  • 非技术篇 24篇
  • Python 34篇
  • HC32 5篇
  • TI-Software 15篇
  • TOOL 16篇
  • BATTERY 2篇
  • GPT
  • C 29篇
  • GD32 10篇
  • RT-Thread 16篇
  • Raspberry pi & Linux 8篇
  • IOT 15篇
  • RFID 1篇
  • zigbee 15篇
  • FPGA 5篇
  • QT 47篇
  • KEIL 13篇
  • UWB 1篇
  • DAY TIME 91篇
  • IAR 2篇
  • PCB 34篇
  • STM32 48篇
  • PADS 1篇
  • Matlab 5篇
  • CUBEMX 8篇
  • cadence 14篇
  • VESC 10篇
  • MOS 2篇

最新评论

  • 使用python编写脚本向飞书邮箱发送邮件

    Y-三次方: 你好,你这个问题找到解决的方法了嘛?

  • 关于PT100+电路+程序

    溪绘: 请问大佬pt_ad是什么意思呀

  • 18000-6C整理-入门query/CRC-5

    Abro.: thanks!!表情包

  • 技能梳理14@stm32+esp8266+ds18b20+红外传感器+烟雾传感器+CO传感器+蜂鸣器

    laojiuyou: 14,大佬关注点赞了,求免费

  • 基于ESP32和ESP8266的物联网开发过程(二)

    普通网友: 优质好文,支持支持。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • 安卓淘小说v10.0.2绿化版/一款优质的小说阅读APP
  • 有效、轻松地从 SD 卡恢复已删除照片的教程 606
  • 【AI应用探讨】—生成对抗网络(GAN)应用场景 402
  • 安卓MT管理器v2.16.2/逆向修改神器 本地VIP已解锁 6
  • 【C语言】 全面解析占位符 912

最新文章

  • 感应灯光画纯电路开源版本
  • 10元 DIY 一个柔性灯丝氛围灯
  • 自制全网最便宜的雷达感应灯光画,成本只需5元
2024年19篇
2023年66篇
2022年90篇
2021年45篇
2020年42篇
2019年78篇
2018年74篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大饼酱人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码木棉湾建设网站南联网络营销民治网站优化按天收费南澳高端网站设计东莞关键词排名深圳网站建设设计东莞网站优化按天收费坂田关键词排名包年推广南联网站关键词优化西乡网站推广方案南山高端网站设计永湖关键词按天收费福永百度seo永湖网络广告推广东莞阿里店铺托管宝安关键词排名坪山网站改版光明网站优化按天计费坪地阿里店铺运营双龙营销网站东莞如何制作网站大浪网站优化软件大运seo排名东莞关键词按天计费光明品牌网站设计东莞营销型网站建设广州百度竞价坂田如何制作网站南山百搜标王南联网站设计模板歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化