STM32与GD32环境开发配置

一、CMSIS

        为了将所有Cortex-M芯片供应商产品的软件接口标准化,ARM公司发布了ARM Cortex-M 微控制器软件接口标准(Cortex Microcontroller Software Interface Standard,CMSIS)

CMSIS软件架构由4层构成:用户应用层、操作系统及中间件接口层、CMSIS层、硬件层

CMSIS层主要包括以下3层

(1)核内外设访问层(Core Peripheral Access Layer,CPAL):由ARM公司实现,包括命名定义、地址定义、存取内核寄存器和外围设备的协助函数,同时定义了一个与设备无关的RTOS内核接口函数

(2)中间件访问层(Middleware Access Layer,MWAL):ARM公司实现,芯片厂商负责更新,主要负责定义中间件访问的应用程序编程接口API(Application Programming Interface)函数,如TCP/IP协议栈、USB等协议

(3)设备外设访问层(Device Peripheral  Access Layer,CPAL):芯片厂商实现,负责对硬件寄存器地址及外设接口进行定义,另外,还会对异常向量进行拓展

二、标准库

Libraries文件夹由CMSIS和STM32F10x_StdPeriph_Deiver组成

(1)core_3.c和core_3.h:访问核内外设访问层(CPAL),为采用Cortex-M3内核的芯片外设提供进入M3内核的接口

(2)stm32f10x.h:设备外设访问层(DPAL),包含了外设寄存器的定义、位定义、中断向量表、存储空间的地址映射

(3)system_stm32f10x.c和system_stm32f10x.h:设备外设访问层的源文件和头文件,包含了两个函数和一个全局变量。

函数SystemInit()用来初始化系统时钟,启动文件在完成复位后跳转到main()之前调用该函数

函数SystemCoreClock()用来更新系统时钟,当系统内核时钟变化后必须执行该函数进行更新

全局变量SystemCoreClock包含了内核时钟(HCLK),方便用户在程序中设置SysTick定时器和其他参数

(4)startup_stm32f10x_X.s:汇编语言实现的启动文件,上电复位后首先运行的一段汇编程序

作用:设置初始堆栈指针SP;设置程序计数器PC为复位向量,并在执行main()函数之前调用SystemInit()函数初始化系统时钟;设置向量表入口为异常事件的入口地址;复位后处理器为线程模式,优先级为特权级,堆栈设置为MSP主堆栈

(5)stm32f10x_ppp.c和stm32f10x_ppp.h:外设驱动文件

ppp表示任一外设的缩写

(6)misc.c和misc.h:提供了外设对内核中的嵌套向量中断控制器NVIC的访问函数

这些文件对应到CMSIS标准架构上,如图所示:

                           

在使用标准库开发过程中,把位于CMSIS层的文件中添加到工程中不用修改,用户只需根据需要修改

工程架构如图所示:

注:

1.stm32f10x_it.c和stm32f10x_it.h:用来编写中断服务函数,其中已经定义了一些系统异常的接口,中断服务函数的接口(函数名)在启动文件中已经写好

2.stm32f10x_conf.h文件被包含进stm32f10x.h文件中,用来配置使用了哪些外设的头文件,用这个头文件可以方便的增加和删除外设驱动函数

三、配置环境

3.1 STM32标准工程配置

在工程中建立3个文件夹,分别为System、Libary、User

System:启动文件(startup_stm32f10x_md.s)、核内外设访问层文件(core_3.c和core_3.h)、设备外设访问层(system_stm32f10x.c和system_stm32f10x.h)以及外设寄存器描述文件(stm32f10x.h)

Libary:各个外设驱动的源文件和头文件

User:main.c、stm32f10x_it.c和stm32f10x_it.h、stm32f10x_conf.h

        将上述文件添加到工程后,还需要点击魔法棒,设置C/C++选项,在Define选项卡中加入两个重要的宏,一个宏是USE_STDPERIPH_DRIVER(使用标准外设库,也可以在stm32f10x.h文件的末尾找到),另一个是STM32F10X_MD(指明CPU的容量)。之后,还要确定和工程有关的头文件的路径

        至此,开发环境已经配置成功,可以进行对STM32F103C8T6芯片的开发

3.2 GD32标准工程配置

(1)新建APP、BSP、CMSIS、Libary文件夹

(2)将GD32F30x_Firmware_Library_V2.2.0\Template中的文件拷贝到新建的BSP文件夹中

将main.c、main.h文件拷贝到APP文件夹中

(3)将GD32F30x_Firmware_Library_V2.2.0\Firmware\CMSIS中的文件拷贝至CMSIS文件夹中

 

拷贝完成后,文件夹如下图所示:

(4)将标准库拷贝至Libary文件夹中

(5)将对应的文件添加到工程中

        将上述文件添加到工程后,还需要点击魔法棒,设置C/C++选项,在Define选项卡中加入两个重要的宏,一个宏是USE_STDPERIPH_DRIVER(使用标准外设库,也可以在stm32f10x.h文件的末尾找到),另一个是GD32F30X_HD(指明CPU的容量)。之后,还要确定和工程有关的头文件的路径

测试程序:

#include "main.h"


int main(void)
{
    /*开启GPIOC时钟*/
    RCU_APB2EN |=  RCU_APB2EN_PCEN;

    /*引脚配置*/
    GPIO_CTL1(GPIOC) |= GPIO_CTL1_MD13;     //50MHz输出
    GPIO_CTL1(GPIOC) &= ~GPIO_CTL1_CTL13;   //推挽输出

    /*输出低电平*/
    GPIO_BOP(GPIOC) |= GPIO_BOP_CR13;


    while (1)
    {
 
    }
}

        将测试程序烧录至GD32单片机中,发现LED灯点亮,说明工程创建成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值