GAIWEI例子:GD32F103移植STM32F103
使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。虽然两个款芯片的寄存器地址以及架构基本相同。但是需要注意的是GD32F10x主频是108兆,但是STM32F10x主频是72兆。所以需要针对以RCC时钟进行修改。
1.先将芯片的选项进行修改:查找对应芯片。
2.将STM32的启动文件替换成GD的启动文件。
3.修改时钟相关配置。
打开stm32f10x.h文件,#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up /
修改为#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF) /!< Time out for HSE start up */
4.修改system_stm32f10x.c文件
改为:
5.对应的文件利、里,SYCLK_FPEQ_72 MHZ 72改为108
6.添加108MHZ的时钟配置程序
7.最后,然后修改读取时钟的函数void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
关键字:GD32 代码移植 STM32
引用地址:
GD32代码移植STM32(一)
推荐阅读最新更新时间:2024-11-21 16:21
STM32进不了外部中断的一个可能原因
近期在使用一块STM32的板子的时候,用库函数和外部中断来接收霍尔传感器信号,配置了很久,就是进不去外部中断。 IO口的初始化函数如下: void Hall_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC时钟 RCC_APB2PeriphClockCmd(RCC_A
[单片机]
STM32之SPI从机例程
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /*
[单片机]
STM32 DMA简述
STM32 DMA简述 **DMA (Direct Memory Access) ** 直接内存存储器,在做数据传输时能够大大减轻CPU的负担。 DMA的作用 DMA提供了一个关于数据的高数传输通道,这个通道不占用CPU的资源。换句话说,通过DMA通道,你在传输大规模数据的时候CPU同时也能够去干其他事。 你可以控制DMA通道的接入口,灵活配置传输的数据源和目的地。以下几个是常用的DMA传输路径: 从外设到内存 从内存A区域传到内存B区域 从一个外设传输到另一个外设 从内存传输数据到外设 .... DMA流程分析 在stm32中,DMA是以类似外设的形式添加到内核之外的,下面我们来看具体的框图: 从上图我们可以看到,DMA通过
[单片机]
STM32单片机-汇编指令1
目录: 1、ldr/str/mov指令 1)LDR指令 2)STR和LDRB指令 3)MOV指令 4)使用示例 2、MOVS指令 3、LDM表示装载,STM表示存储 4、teq指令 5、使用tst来检查是否设置了特定的位 6、'^'的理解 7、spsr_cxsf,cpsr_cxsf的理解 8、cpsr的理解 9、指令后缀和条件判断 10、B、BL、BX、BLX 和 BXJ指令的区别 1)B 指令 2)BL 指令 3)BLX 指令 4)BX 指令和BXJ指令 5)总结 --------------------------------------------
[单片机]
STM32 I2C AT24C02驱动
如果搞过51的I2C的同志,再来看看STM32的I2C驱动,一定有相见恨晚的感觉。STM32自带I2C硬件模块,再配合ST的官方库函数,I2C在STM32这里可以玩得如火的地步。这里的这个I2C驱动算是很完整了的,可以直接拿来用到项目开发中去。好,不废话,上图: 工程结构图: 1、main.c #include stm32f10x.h #include usart1.h #include led.h #include i2c_at24c02.h #include struct Contact{ u8 Name ; //姓名 u8 Phone ; //电话
[单片机]
【STM32】GPIO输入—按键检测
2.1硬件设计 弹性按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一 下子断开,使用按键时会产生如图带波纹信号,需要用软件消抖处理滤波,不方便输入检测。当然有专用的去抖电路,也有专用的去抖芯片,但通常我们用软件延时的方法就能解决抖动问题,没有必要添加多余的硬件电路。 2.2软件设计 同 LED 的工程,为了使工程更加有条理,我们把按键相关的代码独立分开存储,方便 以后移植。在“工程模板”之上新建“bsp_key.c”及“bsp_key.h”文件,这些文件也可根 据您的喜好命名,这些文件不属于 STM32标准库的内容,是由我们自己根据应用需要编写 的。 2.2.1编程要点 使能 GPIO端口时钟;
[单片机]
STM32学习日志——ADC实验
一、ADC简介: STM32有1~3个ADC,我使用的STM32F103ZET6有3个ADC,是12位逼近的数字模拟转换器,它有18个通道,包括16个外部通道和2个内部信号源。每个ADC有4种模式:单次、连续、扫描、间断。存储方式分为左对齐或右对齐,一般选择右对齐。ADC将转换分为两个通道组:规则通道与注入通道,规则通道相当于正常执行的程序,注入通道相当于中断。规则通道最多包含16个,注入通道最多位4个。 本次介绍仅介绍规则通道的单次转换, 二、软件配置: 1)开启PA口的时钟和ADC1的时钟,设置PA1为模拟输入; 2)复位ADC1,同时设置分频因子;要保证ADC的时钟不超过14MHZ,否则可能不准,而APB2的时钟为7
[单片机]
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍 (6) ADC 模块介绍
6.1.ADC 基础知识 12 位逐次逼近式模数转换器模块(ADC),可以采样来自于外部输入通道、内部输入通道的模拟信号,采样转换后,转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。 6.2.GD32 ADC 外设原理 GD32 ADC 主要特性 ◼ 高性能: – ADC采样分辨率: 12位、 10位、 8位、或者6位分辨率; – 前置校准功能; – 可编程采样时间; – 数据存储模式:最高有效位对齐和最低有效位对齐; – 支持规则数据转换的DMA请求。 ◼ 模拟输入通道: – 16个外部模拟输入通道; – 1个内部温度传感器输入通道(VSENSE); – 1个内部参考电压输入通道(VREFINT
[单片机]