-
GD32F10x
到
GD32F1x0-
软件移植
说明
GD32F10x
到
GD32F1x0
的软件移植说明
1
、
移植前准备工作。
将原有的
ST
的
10x
的库替换
成我们
GD
的
库(可以从
demo
中找到)
,包括系统头文件、外
设库文件以及启动文件等,
当前给客户提供的库
都
是以
stm32f0xx
命名,这是我们在
ST
的
10x
和
< br>0xx
的外设库的基础上修改的,
完全可以正常
使用,后续我们会推出自己的库。开发环境的
device
选择和
flash
配置可以有两种方式,一
种方式是直接
device
中选择
ST
的
STM32F100C8
,
flash
配置选择
ST
的
64K
的
flas
h
配置文件;
另一种方式是使用我们提供的
GD
的
GD32F1x0
的
device
(需要事先在
keil
安装目录下添加我们
GD
的配置文件)
,
flash
配置选择我们
GD
的
64K
flash
配置文件,其他配置可保持与之前相同不
用改动。如果选择
GD
的配置文件,需要操作的
步骤如下
(假如
keil
的安装路径为:
< br>C:Keil
)
:
①
拷贝
到
C:KeilUV4
。
②
拷
贝
GD32F1x0_
到
C:KeilARMFlash
。
③
C:Keil
下创建文件夹命名
“
GD
”
。
④
GD
文
件
夹
下
创
建
文
p>
件
夹
命
名
“
GD32F1x0
”
。
⑤
拷
贝
到
C:KeilARMSFDGDG
D32F1x0
。
这样,在
keil
的
device
界面,就可以找到
GD32F1x0
的
device
,如图
1.1
所示。<
/p>
图
1.1
选择
GD32F1x0
的
device
图
1.2
flash
配置文件及路径说明
2
、
所有模
块的
GPIO
初始化部分。
1x0
相对于
10x
系
列最大的改动在
GPIO
部分,
主要有
以下三点:
2.1
GPIO
时钟总线配置区别。
之前<
/p>
10x
系列的
GPIO ABCDF
p>
都挂在了
APB2
总线上,
而
1x0
的
GPIO
口都挂在了
AHB
总线上,
所以在打开
GPIO
ABCDF
的时钟的时候就要注意,
如下:
比如
使能
GPIOA
时钟:
10x
下
配
置
为
:
RCC_APB2PeriphClockCm
d(RCC_APB2Periph_G
PIOA,ENABLE);
1x0
下
需
改
为
:
RCC_AHBPeriphClockCmd(
RCC_AHBPeriph_GPI
OA,ENABLE);
GPIOB
、
C
、
< br>D
、
F
的时钟使能以此类推。<
/p>
2.2
GPIO
口复用配置区别。
1x0<
/p>
系列和
10x
系列的
IO
口复用配置模式不
同。具体对比说明如下:
比如
USART1
的<
/p>
GPIO
口配置,可以映射到
PA9
p>
和
PA10
,也可以映射到
PB6
和
PB7
。
2.2.1 10x
配置
USART1
的
GPIO
口,大概
过程
如下(以
PA9
和
PA10
为例)
:
2.2.1.1
首先使能
USART
1
、
GPIOA
和
AFIO
的时
钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_U
SART1, ENABLE);
RCC_APB2PeriphCloc
kCmd(RCC_APB2Periph_
1x0
无需
GPIOA , ENABLE);
复用模式
RCC_APB2Peri
phClockCmd(RCC_APB2Periph_A
FIO ,
ENABLE);
2.2.1.2
然后配置
PA9
和
PA10
的模式。<
/p>
GPIO_InitTypeDef
GPIO_InitStructure;
GPIO__Pin
GPIO_Pin_9;
GPIO__Speed
GPIO_Speed_50MHz;
GPIO__Mode
GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO__Pin
GPIO_Pin_10;
GPIO__Mode
GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
2.2.1.3
最后配置串口相应参数,这部分和
1x0
完全相同,就不列出来了。
2.2.2 1x0
配置
USART
1
的
GPIO
口,大概过程
如下(以
PA9
和
PA1
0
为例)
:
2.2.1.1
首先使能
USART
1
、
GPIOA
的时钟。
=
=
=
=
=
R
CC_APB2PeriphClockCmd(RCC_APB2Periph_U
S
ART1, ENABLE);
RCC_AHBPeriphClockCmd(RC
C_AHBPeriph_GP
IOA , ENABLE);
2.2.1.2
然后配置
PA9
p>
和
PA10
的模式。
GPIO_InitTypeDef GPIO_InitStructure;
复用模式
GPIO_PinAFConfig( GPIOA ,
GPIO_PinSource9, GPIO_AF_1 );
GPIO_PinAFConfig( GPIOA ,
GPIO_PinSource10,
GPIO_AF_1
);
此处不需
GPIO__P
要再配置
in
=
GPIO_Pin_9
|
GPIO_Pin_10;
GPIO__M
ode
= GPIO_Mode_AF;
GPIO__S
peed
=
GPIO_Speed_50MHz;
GPIO__O
Type
=
GPIO_OType_PP;
GPIO__P
uPd
= GPIO_PuPd_NOPULL;
GPIO_Init(
&GPIO_InitStructure);
如果将
USART1
映射到
PB6
< br>和
PB7
,则复用模
式配置如下
:
GPIO_PinAFConfig( GPIOB ,
GPIO_PinSource6, GPIO_AF_0 );
GPIO_PinAFConfig(
GPIOB
,
GPIO_PinSource7, GPIO_AF_0
);
至于为什么
PA9
、
PA10
映射到
GPIO_AF_1
,
PB6
和
PB7
映射到
GPIO_AF_0
,需要查看
1x0
的
datasheet
< br>,如下图:
GPIOA
,
图
2.1
PB
复用功能说明
所以,关于
GPIO
口的复用配置都需要参考
datasheet
来完成。
2.2.2.3
最后配置串口相应参数,这部分和
10x
完全相同,就不列出来了。
2.3 GPIO
口模式配置
p>
10x
系列的
GPIO
口有
8
种模式,如下图:
图
2.2
10x
系列
GPIO
口
8
种模式
而
1x0
系列的
GPIO
口配置
在
10x
系列的基础
上,按输入输出、
推挽开漏、上拉下拉模式分成
了三个结构体,
相较
10x
系列而言,
组合方式更
加自由,如下图:
图
2.3
1x0
系列
GPIO
口模式
例如:
10x
系列配置
某个
GPIO
口为推挽输出
GPIO__Mode
=
GPIO_Mode_Out_PP
1x0
系列中,就变成了两条语句:
GPIO__Mode
GPIO_Mode_OUT;
GPIO__OType=
GPIO_OType_PP;
又如:
10x
系列配置某个
GPIO
口为下拉输入:
GPIO__Mode
=
GPIO_Mode_IPD
1x0
系列中,就变成了:
GPIO__Mode
GPIO_Mode_IN;
GPIO__PuPd
=
GPIO_PuPd_DOWN;
3
、
外设中断部分
=
=
-
-
-
-
-
-
-
-
-
上一篇:人教版小学语文五年级下册词语表(带拼音)
下一篇:lammps输入文件命令中文详解