GD32使用IAR编程详细教程

article/2025/9/12 22:31:39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、IAR的补丁环境安装和固件库说明
  • 二、搭建编程环境
  • 三、系统时钟配置


前言

由于STM系列单片机价格疯涨,不少嵌入式的开发人员都想着找一款国内的单片机进行替代,还需要与之前开发的芯片兼容性较高,代码移植率高。因此GD32系列芯片应用而生,同样的芯片内核ARM® Cortex-Mx,让开发人员快速的适应新的产品。接下来就把自己学到和遇到的问题在这统一叙述。


一、IAR的补丁环境安装和固件库说明

IAR补丁环境的官方安装网址:http://gd32mcu.com/cn。

前面两个是keil环境,第三个是IAR环境,支持win8以下,win10电脑需要修改兼容性
在这里插入图片描述
安装默认会安装在最高版本的IAR目录下,不要自己修改文件夹位置,最好使用IAR7.4版本以上的,本人使用的是IAR8.32.4。
接着下载对应芯片的固件库
解压后会有四个文件夹:Examples(一些外设的使用案例)、Firmware(固件库文件,包括CMSIS文件和GD32F30x_standard_peripheral文件,具体看文件里面的内容)、Template(工程模板,有KEIL和IAR编程环境,任选保留一个)、Utilities(其它一些第三方插件)。

二、搭建编程环境

1、将Template文件夹下除了要使用的环境文件(IAR_project或Keil_project)其它都删掉,然后将Examples文件夹下的选一个案例,将案例下所有.C和.H文件复制到Template文件夹下,这样一个简单的工程就搭建好了,但接下来还有一些事情要做。 在这里插入图片描述
2、双击下图的IAR工作环境,就可以进入编程界面。在Options选项配置中,设定Device为使用的芯片,因为已经安装了补丁,所以能找到对应的芯片型号,如果找不到GD,说明安装补丁位置错误或是没有安装上。

在这里插入图片描述
3、下一步:
在这里插入图片描述
可以看到一些文件已经被包括在这里了,主要是一些头文件。自己新建工程的时候一定要注意这里的头文件都要包括上,不然在编译的时候会报错找不到某某文件。还有由于使用的是高容量的GD32所以要改成GD32F30X_HD(Flash在256k到512k之间为HD,512k以上是XD,互联型CL)。
在这里插入图片描述
在Linker选项里,一定要选中对应产品型号的.icf文件,选了Device后这个会自动配置上,检查下即可,Edit里是存储器的地址配置和堆栈的配置,可以先不用管。

4、接下来,就是Debugger的配置,在Setup中选择使用的下载器,J-link\ST-link\DAP这个跟STM32配置方法一致,在Download中选择正确的board,并勾选,检查一下没错就行。其它配置没有什么区别需要注意的了。
在这里插入图片描述
5、编译一下,应该不会出现什么问题,毕竟是官方固件库,如果出错,检查配置或根据编译信息,查看是否有文件因为没有用到而报错。

三、系统时钟配置

1、在startup_gd32f30x_hd.s启动文件中有如下一串代码,应该都很熟悉这段代码了,SystemInit将用来配置系统时钟。

> Reset_Handler
>         LDR     R0, =SystemInit
>         BLX     R0
>         LDR     R0, =__iar_program_start
>         BX      R0

进入函数体:在system_gd32f30x.c这个库函数里,主要功能是打开一些时钟使能位,可以对着寄存器说明来阅读。

void SystemInit (void)
{/* FPU settings */
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
#endif/* reset the RCU clock configuration to the default reset state *//* Set IRC8MEN bit */RCU_CTL |= RCU_CTL_IRC8MEN;RCU_MODIFYRCU_CFG0 &= ~RCU_CFG0_SCS;#if (defined(GD32F30X_HD) || defined(GD32F30X_XD))/* reset HXTALEN, CKMEN and PLLEN bits */RCU_CTL &= ~(RCU_CTL_PLLEN | RCU_CTL_CKMEN | RCU_CTL_HXTALEN);/* disable all interrupts */RCU_INT = 0x009f0000U;
#elif defined(GD32F30X_CL)/* Reset HXTALEN, CKMEN, PLLEN, PLL1EN and PLL2EN bits */RCU_CTL &= ~(RCU_CTL_PLLEN |RCU_CTL_PLL1EN | RCU_CTL_PLL2EN | RCU_CTL_CKMEN | RCU_CTL_HXTALEN);/* disable all interrupts */RCU_INT = 0x00ff0000U;
#endif/* reset HXTALBPS bit */RCU_CTL &= ~(RCU_CTL_HXTALBPS);/* Reset CFG0 and CFG1 registers */RCU_CFG0 = 0x00000000U;RCU_CFG1 = 0x00000000U;/* configure the system clock source, PLL Multiplier, AHB/APBx prescalers and Flash settings */system_clock_config();
}

最后进入时钟的配置函数体system_clock_config();定义使用不同的系统时钟源,就会有相应的配置函数,我们用的是外部8M晶振,且最大能到120MHz,所以需要定义__SYSTEM_CLOCK_120M_PLL_HXTAL,配置函数才能使用。这个定义在system_gd32f30x.c的开头

static void system_clock_config(void)
{
#ifdef __SYSTEM_CLOCK_IRC8Msystem_clock_8m_irc8m();
#elif defined (__SYSTEM_CLOCK_48M_PLL_IRC8M)system_clock_48m_irc8m();
#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M)system_clock_72m_irc8m();
#elif defined (__SYSTEM_CLOCK_108M_PLL_IRC8M)system_clock_108m_irc8m();
#elif defined (__SYSTEM_CLOCK_120M_PLL_IRC8M)system_clock_120m_irc8m();#elif defined (__SYSTEM_CLOCK_HXTAL)system_clock_hxtal();
#elif defined (__SYSTEM_CLOCK_48M_PLL_HXTAL)system_clock_48m_hxtal();
#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL)system_clock_72m_hxtal();
#elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL)system_clock_108m_hxtal();
#elif defined (__SYSTEM_CLOCK_120M_PLL_HXTAL)system_clock_120m_hxtal();
#endif /* __SYSTEM_CLOCK_IRC8M */
}

这个定义在system_gd32f30x.c的开头,有这么一段定义,取消注释相应的时钟定义就可以。
在这里插入图片描述
然后就进入真正的时钟配置函数void system_clock_120m_hxtal(void)。包括AHB\APB1\APB2的时钟。最终配置成AHB=120Mhz,APB1=120;APB2=60。

     /* AHB = SYSCLK */RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;/* APB2 = AHB/1 */RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;/* APB1 = AHB/2 */RCU_CFG0 |= RCU_APB1_CKAHB_DIV2;#if (defined(GD32F30X_HD) || defined(GD32F30X_XD))/* select HXTAL/2 as clock source */RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0);RCU_CFG0 |= (RCU_PLLSRC_HXTAL_IRC48M | RCU_CFG0_PREDV0);/* CK_PLL = (CK_HXTAL/2) * 30 = 120 MHz */RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4 | RCU_CFG0_PLLMF_5);RCU_CFG0 |= RCU_PLL_MUL30;

这里CK_PLL = (CK_HXTAL/2) * 30 = 120 MHz ,那可知CK_HXTAL为8Mhz,表示外部晶振为8Mhz,如果外部用的是12M或是其它的呢?在哪里修改?
在这里插入图片描述
在gd32f30x.h这个头文件里找到上面这段代码,修改外部晶振的值。
另外在这个头文件开头还有如下的定义,如果没有这个蓝色圈的定义,很多代码都无法执行。在这里插入图片描述
好了,以上就是初次接触学习和了解到的,有帮助的话给个支持吧,后面有发现新的问题不断更新。

---# 总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

http://chatgpt.dhexx.cn/article/qqqR9SXl.shtml

相关文章

IAR FOR STM8 简单使用教程

一、创建工程 1.先创建一个workplace.选择File>New>Workplace 2.创建一个新的工程&#xff0c;选择Project>Creat New Project,如果用的是IAR FOR STM8 就默认无需更改。保存并输入Project名字&#xff0c;在workplace窗口中显示如下 3.在添加文件到工程之前&#xf…

IAR使用教程

转载至&#xff1a;https://www.cnblogs.com/nanase/p/9028351.html 面向尚未熟悉且初次使用该软件的新手&#xff08;比如我。。。&#xff09; 1、建立新工作区 File-->>New Workspace 2、建立新项目 1) Project-->>Create New Project... 2) 选择如下模板&…

IAR的基本使用

IAR 一、IAR介绍 是一款和keil类似的开发工具软件 二、IAR的使用 2.1创建工程 2.1.1 建立新工作区 File–>>New Workspace 2.1.2 建立新项目 Project–>>Create New Project… 选择Empty project空项目选择项目的保存目录并创建项目文件名 2.2 编译、Mak…

IAR的基本使用教程

文章目录 IAR的基本使用教程1. IAR颜色字体大小设置2. 其他设置(行号、文件编码)3. 新建用户源文件和头文件模块并添加到工程4. 编译输出可执行文件5. 软件仿真单步调试6. 自带终端打印 IAR的基本使用教程 1. IAR颜色字体大小设置 Tools–>Options 双击展开Editor&#xf…

pip更新命令以及使用清华镜像快速安装OpenCV-python

pip更新命令以及使用清华镜像快速安装OpenCV-python 1.pip更新&#xff1a; 首先尝试使用pip install --upgrade pip进行安装&#xff0c;如果安装出现这种情况&#xff1a; 则使用以下命令&#xff1a; python -m pip install -U --force-reinstall pip2.使用清华镜像快速安…

ubuntu更新pip

You are using pip version 9.0.3, however version 10.0.0 is available. You should consider upgrading via the pip install --upgrade pip command. 当我们用pip安装python包的时候 会发现pip 又又又又又又又又又又又又又又又又又又更新了 于是&#xff0c;我们按照提示 p…

Anaconda/pip常见命令

目录 一、Conda使用 1.1 conda基础命令 1.2 添加第三方源 二、pip常见命令 一、Conda使用 1.1 conda基础命令 打开anaconda Prompt 输入conda list 就会显示已经安装好的库 如果这些库中没有自己需要的库就可以用 anaconda search -t conda tensorflow 查找需要的库这样就会…

关于Python环境下WindowsMac 升级pip的方法最佳实践(附pip常用命令)

升级pip的最佳实践 升级pip有很多种方法&#xff0c;以下列举我使用的两种方法&#xff0c;并对它们的优缺点进行总结&#xff1a; Mac电脑中操作 使用pip install --user --upgrade pip命令升级pip&#xff0c;该方法会在用户的/User/xxx/Library/Python/3.8/lib/python/si…

镜像安装pip更新python库

目录 打开cmd命令提示符输入以下代码进行更新 通过外网加速 &#xff1a; 先安装镜像提高下载速度 当在执行pip更新时&#xff0c;出现失败或警告&#xff0c;再次执行pip命令报错时&#xff0c;分别按顺序执行以下2条命令即可完成修复。 打开cmd命令提示符输入以下代…

如何更新pip工具

安装keras出现错误&#xff1a; 由于我的pip工具是22.0.4版本而下载keras需要22.1.2版本所以我们需要更新pip工具 方法&#xff1a; 1.window键R打开命令行窗口 2.在命令行使用命令&#xff1a; python -m pip install --upgrade pip &#xff08;但是比较新的版本无法识别…

pip更新方法

我们在pycharm中更新pip常会有如下错误提示无法完成pip更新,但是pip不更新会影响其他扩展包的安装: You are using pip version 9.0.1, however version 19.0.2 is available.You should consi der upgrading via the ‘python -m pip install --upgrade pip’ command.pip更新…

Python pip更新教程(两种方式)

1. 直接采用命令行模式更新 1.1 搜索框搜索cmd&#xff0c;然后以管理员模式打开 1.2 执行命令 python -m pip install --upgrade pip1.3 查看更新后的版本 pip --version注&#xff1a;如果更新失败&#xff0c;可能是因为网络的问题&#xff0c;则选择第二种更新方法。 2.…

vmware虚拟机linux破解密码

一&#xff0c;启动Linux 二&#xff0c;到这个界面疯狂按E 三&#xff0c;找到linux16&#xff0c;在最后加 空格rd.break&#xff0c;按ctrlx启动 四&#xff0c;需要重新以读写的方式挂载根&#xff0c;切换目录&#xff0c;箭头输入新密码&#xff0c;打label标签&#x…

win10 vmware做服务器稳定吗,在Win10上跑虚拟机,用VBox好还是VMware好或者其他的?...

VBox优点 在安装完操作系统后。开启虚拟机中的操作系统&#xff0c;在虚拟机操作系统界面左上角(如果不小心全屏了&#xff0c;鼠标放到显示器中下部能滑出菜单)&#xff0c;找到‘安装增强包’的选项&#xff0c;傻瓜式安装增强包。这样&#xff0c;不管虚拟机系统的操作界面被…

VMware虚拟机操作汇总

一、 ubantu虚拟机安装 1. 安装流程 VMware Workstation Pro 16 安装 Ubuntu 20.04_青柠小苍兰的博客-CSDN博客_vmware16pro安装ubuntuhttps://blog.csdn.net/qq_45642410/article/details/113756950 2. VMware tools安装 完美解决VMware Tools一直灰色 无法安装问题&#…

Vmware workstation 16pro解锁装MacOS

一、需要先下载个解锁补丁unlocker&#xff1a;链接 二、下载好之后解压&#xff0c;进入文件夹以管理员身份运行win-install.cmd文件&#xff0c;注意&#xff0c;如果VMware已经开了要先关闭&#xff1a; 完成&#xff1a; 三、打开VMware&#xff0c;已出现macos选项&…

1台电脑搞定N个操作系统,Window10下的Vmware Workstation Pro15.5.0安装和注册破解

前言 VMware Workstation Pro 是将多个操作系统作为虚拟机 (VM) 在单台 Linux 或 Windows PC 真机上运行的工具。 借助 VMware Workstation Pro&#xff0c;您可以在同一台 Windows 或 Linux PC 上同时运行多个操作系统。 创建真实的 Linux 和 Windows 虚拟机以及其他桌面、服…

VMware安装最新版CentOS7图文教程

转自&#xff1a;幻凡css的博客 首先安装VM&#xff0c;VM破解版和激活版的百度有很多&#xff0c;随意下载一个 下载CentOS7 地址1&#xff1a;https://mirrors.btte.net/centos/7/isos/x86_64/ 地址2&#xff1a;http://mirrors.163.com/centos/7/isos/x86_64/ 版本&#xff…

VMware Workstation 的 MacOS 解锁补丁 Unlocker 4.2.4

更新Unlocker 4.2.4  度盘&#xff1a;pan.baidu.com/s/1aqGWZtWjMC5WPCX9E7seaQ 提取码: xpg4 当前版本支持&#xff1a; Workstation Pro 16/17 on Windows and Linux Workstation Player 16/17 on Windows and Linux Windows使用指南 打开“windows”文件夹&#xff0c;双…

VMware14虚拟机破解版安装详细教程

logo.jpg (87.04 KB, 下载次数: 0) 下载附件 保存到相册 2018-8-22 17:54 上传 VMware是功能最强大的虚拟机软件,用户可以在虚拟机同时运行各种操作系统,进行开发、测试、演示和部署软件,虚拟机中复制服务器、台式机和平板环境,每个虚拟机可分配多个处理器核心、主内存和…