STM32F10x程序移植到GD32E10x

前言:两个芯片是Pin to Pin的,因此硬件基本不用修改,只需修改软件即可。

1、开发化境

IDE:IAR,MDK

调试下载工具:stlink、jlink ob  、jlink均可

2、数据类型定义

在stm32早期的库中使用了u8,u16,u32等数据类型,需要在gd32e10x.h文件中定义u8,u16,u32等数据类型。

3、时钟配置

根据硬件设计,在system_gd32e10x.c里选择使用内部8M或者外部晶振,不同的外部晶振倍频系数不一样,倍频到120M。

4、systick延时

由于GD32E10x最大主频是120M,STM32f10x只能到72M,所以在延时函数里面的SysTick->LOAD 赋值上要把72改为120,当然最大延时时长也就发生了变化。

5、gpio操作

stm32那样,需要先创建一个结构体变量,再给结构体成员赋值;GD32更简单,直接用gpio_init函数初始化,例如:

gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ,GPIO_PIN_2);

6、Timer

操作和STM32基本一样,在GD32E10x系列中,有timer 5、timer 6两个普通定时器,可以配置自动重载,产生更新中断。

7、串口

GD32E10x的串口从USART0开始,对应的就是STM32的USART1。其他操作和STM32类型。

例如操作GD32E10x的USART0:

初始化串口:

void CommInit(void)
{
//a、时钟使能
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_USART0);
//b、GPIO配置
    gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
//c、串口配置
    usart_deinit(USART0);
    usart_baudrate_set(USART0, 115200U);
	usart_word_length_set(USART0, USART_WL_8BIT);
	usart_stop_bit_set(USART0, USART_STB_1BIT);
	usart_parity_config(USART0, USART_PM_NONE);
	usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
	usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);

    usart_receive_config(USART0, USART_RECEIVE_ENABLE);
    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
    usart_enable(USART0);
//d、中断配置
	nvic_irq_enable(USART0_IRQn, 3, 0);
	usart_interrupt_enable(USART0, USART_INT_RBNE);
}

串口中断:


void USART0_IRQHandler(void)
{
	u8 ch;

	if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))
	{
      ch = usart_data_receive(USART0);
	  usart_data_transmit(USART0,ch);
    }
}

8、flash编程

GD32E10x系列flash只能字(32bit)、双字(64bit)编程,不支持半字(16bit)编程。


http://www.niftyadmin.cn/n/504484.html

相关文章

外包接单故事——基于LoRa的应用开发

前言:以前的同事找到了我,他负责硬件,我负责软件,开发基于LoRa的料架车监测。 1、应用背景 主要是为了提高医院料架车的利用效率,通过监测料架存放区位是否有料架车。 2、MCU与LoRa选择 LoRa官方的DEMO使用的是STM3…

Struts2 读书笔记(一) 前言、安装、配置

内容多来自书本、网络和教程,在此特别感谢: Struts2权威指南--基于WebWork核心的MVC开发 作者:李刚 浪曦_Struts2应用开发系列 讲师:风中叶Max On Java 的 Struts 2.0 系列一、前言 Struts2 是 WebWork 的升级。它同样适用拦截器…

java中怎么判断一段代码时线程安全还是非线程安全_3万字的Java后端面试经历总结

HashMap源码“问:HashMap底层原理,为什么线程不安全。hashmap: 数组 链表 红黑树 初始长度 16 扩容因子 0.75 索引确定: index hashCode(key) % length hashCode(key) 高8位与低8位异或 & (length - 1)关于线程不安全HashMap会进行r…

STM32与LoRa低功耗调试总结

前言:物联网的大部分设备都是电池供电的,设备本身低功耗对设备使用寿命至关重要,今天就以实际调试经验,聊一聊stm32的低功耗调试。 1、stm32在运行状态下的功耗 上图截图自stm32l15x手册,stm32l15x系列最大运行在32M&…

分析stm32f103x timer6用不了的原因?

最近在修改别人的代码,程序里面使用了timer7,因为要扩展一些功能,所以准备使用timer6,但是配置了后,发现timer6不能正常运行。 查看stm32f10x手册,发现timer6和timer7都是通用定时器,用法也一样…

1028 母函数

i是增量,每一个数n都可以表示成0n……(1),和n个1相加……(2) 先看n3,c1[0] c1[1] c2[2] c2[3] 1 ,他们表示n个1相加, c1[0]表示0和n相加都等于n只有一种情况 i2,j0,k…

【2020年总结】创业尝试、跳槽涨薪、外包接单、学着理财

一、一次简单的创业尝试 2016年底入职的这家公司,2020年6月离开了老东家,在《离职总结》一文中详细写了原因,离职后并没有立即找工作,而是自己基于ASR6505开发了LoRa开发板,并且写了相关的详细文档《从0到1搭建LoRa物…

C# 操作Excel之旁门左道 [ C# | Excel ]

前言 C#使用自带的库(Excel 11.0/5.0 Object Library)操作Excel一直以来都有些问题,最严重的要数有时候Excel进程结束不掉这个问题,操作起来也不是很方便。其实Excel用得稍熟点的朋友就知道Excel可以导出为html格式的文件,我想说到这里大家应…