STM32系列MCU不同型号的移植
mcu移植流程范文
mcu移植流程范文MCU(Microcontroller Unit)是一种微型计算机系统,包含了CPU、存储器、输入输出接口和定时器等部件,广泛应用于各种嵌入式系统中。
MCU移植指的是将相同或不同架构的MCU芯片上的软件移植到另一种MCU芯片上的过程,以便在新的硬件平台上运行软件。
这篇文章将详细介绍MCU移植的流程。
1.硬件平台选型:首先需要选择目标MCU芯片,确保该芯片具备满足项目需求的功能特性。
考虑芯片的处理能力、存储容量、外设接口、功耗等因素。
同时,要注意MCU是否支持所需的移植操作系统或开发环境。
2.准备开发环境:根据目标MCU芯片的选择,安装相应的集成开发环境(IDE)和编译器。
这些开发工具通常由MCU芯片厂商提供,用于编写、编译和调试软件。
3.移植操作系统:如果移植的软件涉及到操作系统,需要进行操作系统的移植。
首先,要了解目标MCU芯片支持的操作系统类型,比如RTOS(实时操作系统)或者Linux,然后将操作系统的源代码和配置文件导入到开发环境中,并进行编译和调试。
4.移植设备驱动程序:设备驱动程序是控制外围设备的软件模块,如串口、GPIO、ADC等。
将原有设备驱动程序的源代码导入到开发环境中,并进行适配和调试,确保其与目标MCU芯片的硬件接口兼容。
5.移植应用程序:将原有应用程序的源代码导入到开发环境中,并进行编译和调试。
由于不同MCU芯片的指令集、存储器布局等可能有所差异,需根据目标MCU 的特性进行相应的修改和优化。
6.端口移植:一些软件可能依赖于特定的硬件平台或外部库,需要进行端口移植。
比如,涉及具体的硬件操作的代码或与外部库的接口等,需根据目标MCU 的硬件平台特点进行修改。
7.调试和测试:完成移植后,需要进行软件的调试和测试,确保软件在目标MCU芯片上能够正常工作。
可以使用调试工具和仿真器对程序进行单步执行和观察内部状态,以及通过外设接口验证软件功能。
8.性能优化:在软件运行过程中,可能会出现性能瓶颈或资源浪费的问题。
STM8S 和 STM32 MCU 一致的 8-32 位产品线实现轻松移植
3.1 复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
● 寄存器大小:8 位与 16 或 32 位
图 1 给出了数字外设的简化表示。
图 1.
数字外设的内部结构
ഄഔ᭄ᘏ㒓 $0%$670
ᘏ㒓ষ ᆘᄬ఼
,3ݙḌ
,2
DL
外设可分成两个主要部分。首先,内核包含状态机、计数器以及任意种类的组合逻辑或顺序 逻辑,它们是执行不需要处理器的任务(如低级通信层、模拟后端管理或时序驱动的功能) 时所必需的。如有必要,可通过 MCU 端口将内核与外界连接。外部连接可能包含一些 I/O 或复杂总线。其次,应用程序通过与内部总线连接的寄存器来初始化和控制外设,该内部总 线与其它 MCU 资源共用。在 8 位微控制器中,处理器直接写入和读取寄存器,而在 32 位 产品中,寄存器读写操作通常通过总线桥来完成。然而,两个系列的主要区别在于外设必须 遵循的内部总线规范。这解释了 STM8S 和 STM32 器件能够共用外设的原因:它们基于相 同的内核,而且仅针对两种不同的总线接口定制。ARM 处理器和外设符合 AMBA 总线规 范,采用 32 位数据总线,而 STM8S 器件使用更为简单但有效的 8 位总线标准。从功能角 度看,它们仅在以下方面存在差异:
2
Huawei_LiteOS在STM32系列处理器上的移植-Huawei_LiteOS_workshop
Huawei LiteOS 在STM32系列处理器上的移植
HUAWEI TECHNOLOGIES CO., LTD.
提纲
Huawei LiteOS支 持的移植 平台简介
Kernel源 码获取途 径
源代码框 架及介绍
移植环境 准备
移植过程 讲解
函数最后加上 ALIGN ;对齐伪指定 AREA KERNEL, CODE, READONLY THUMB
修改TaskSwitch函数,最后添加
NOP ALIGN
END
HUAWEI TECHNOLOGIES CO., LTD. Huawei Confidential 16
步骤三
根据芯片类型适配硬件资源
HUAWEI TECHNOLOGIES CO., LTD.
Huawei Confidential
17
步骤三
根据芯片类型适配硬件资源
二:修改los_hwi.c和对应的头文件,配置中断
根据STM32启动文件修改PendSV_Handler异常向量和SysTick_Handler向 量的名称
Huawei LiteOS源码中,他们分别叫osPendSV、osTickHandler。
36000000 15 0x00008000 SIZE(0x2D0) // default stack 16
#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE
添加用户任务入口函数
extern UINT32 osAppInit(VOID);
该函数需要用户去实现,用户创建的系统任务都在该函数中注册,该函数会被
STM32F10x系列移植到GD32E103系列1.0
1 更高的主频(120MHz VS 72MHz)
2 更高版本的内核(Cortex M4 VS M3)
3 更低的功耗(Run Mode:28.6mA@120MHz VS 50mA@72MHz; Sleep Mode:20.8mA@120MHz VS 30mA@72MHz )
CAN1_RX Default: PB13 Alternate:SPI1_SCK,I2S1_CK, USART2_CTS,TIMER0_CH0_ON, CAN1_TX,I2C1_TXFRAME Default: PB14 Alternate:SPI1_MISO,USART2_RTS, TIMER0_CH1_ON,TIMER11_CH0 Default: PB15 Alternate:SPI1_MOSI,I2S1_SD, TIMER0_CH2_ON,TIMER11_CH11 Default: PD15 Alternate:EXMC_D1 Remap: TIMER3_CH3,CTC_SYNC
Alternate: TRACED2,EXMC_A21 Remap: TIMER8_CH0 Default: PE6
Alternate: TRACED3,EXMC_A22 Remap: TIMER8_CH1
2
引脚号 PA2
STM32F10x 系列引脚定义
Default: PA2 Alternate:USART2_TX,TIM5_CH3,
4.1 时钟移植 ........................................................................................................................................................ 6 4.2 Flash 操作相关软件移植 .............................................................................................................................. 7 5. 外设差异性............................................................................................................................................................. 11 5.1 模数转换器 ADC......................................................................................................................................... 11 5.2 通用同步异步收发器 USART.................................................................................................................... 12 5.3 内部集成电路总线接口 I²C ....................................................................................................................... 12 5.4 串行外设接口/片上音频接口 SPI/I²S ....................................................................................................... 12 5.5 通用串行总线全速设备接口 USBFS ........................................................................................................ 12 6. 附录:..................................................................................................................................................................... 13
stm32f103移植到GD32修改内容及注意事项
stm32f103移植到GD32修改内容及注意事项在国内芯片紧张的情况下,目前如果项目没有成型可以安装官方提供的GD32的pack,选择相关的pack即可正常编程。
若程序已经成型,需要移植,首先就要考虑芯片类型(stm32系列)的选择。
选择过程中首先要根据已用stm32单片机的封装和引脚定义去对应相关的gd32芯片类型。
这里我选用的是GD32f305芯片替换stm32f103rc,所作设置如下:1.点击魔术棒选择stm32f103芯片2.根据晶振设置晶振,这里设置72MHz3.根据芯片flash大小设置STM32F10X_LD、STM32F10X_MD、STM32F10X_HD,不知道的可以查手册,实在不行就一个一个去试。
4.Debug中设置,如果用的是jlink仿真器就选择jlink仿真器,其他的就选用其他的,这里选择SW方式。
另外注意:如果右边框读取不到单片机信息,或者下载不了程序可以把速度降低一些,设置10k或者5k基本可以解决!Device芯片选型C++内容设置Debug内容设置1.软件移植注意事项1.1系统方面的注意事项stm32移植到GD32上芯片选择上的问题:1.1.1 HSE相关内容修改在V3.x的库,启动时间宏定义在xxx32f10x.h头文件中;在V3.0以前的库,其启动时间宏定义在xxx32f10x.h中(HSEStartUp_Ti meOut);修改前:#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 */这里我使用的库是stm32f10x.h里面,位置如图所示。
修改原因:GD和STM32的晶振部分电路设计有一定的差异,两者对外部高速晶振的参数要求也不一样,修改HSE_STARTUP_TIMEOUT宏定义可以保证晶振正常起振。
STM32 系列MCU 不同型号的移植步骤解析
STM32系列MCU不同型号的移植!
第一步
更换启动件:
第二步
修改宏定义:
图1
或者修改stm32f10x.h
具体修改如下:
图2
第三步
修改系统主频率:
文件:system_stm32f10x.c
具体修改如下:
图3
第四步
修改外部晶振源:
文件:stm32f10x.h
其中,Project.bin和Project.axf要和Output选项卡中的Nameof
Executable的名字相同
三、如何使用IAP
1、设置超级终端波特率选择为115200
2、需要下载时将Tamper键按住再按下复位键超级终端打印出帮助信息
3、选择下发文件,协议选择Y_modem,选择下发。
延时修改
使用J-Link调试设置
图7
J-Link不能正常连接目标板
可以尝试一下方法(恢复出厂设置)
具体修改如下:
图4
第五步
定时器需要根据以上修改的系统主频率进行对应的修改。
其他:
修改Flash地址
文件:misc.h
具体修改如下:
图5
与以下配置一致:
IAP设置步骤
一、IAP工程设置
1、修改main中的按键触发键
2、修改下载串口
二、下载工程设置
1、修改程序入口地址
查找NVIC_VectTab_FLASH将其修改为:0x08002000
2、修改options
1)打开Target选项卡在IROM1中将Start和Size分别修改为
0x08002000和0x3E00
2)打开User选项卡在RunUserProgramsBeforeBuild/Rebuild中,勾选
基于STM32F103的RTthread系统移植
RTthread操作系统的移植
一、移植说明
移植平台:STM32F103ZE 移植工具:KEIL (第五版) 二、源码下载 从官网https:///index.html即可下载
• 在(include Paths)头文件搜索路径中添加上ST固件库 中需要的目录: • bsp\stm32f10x\libraries\STM32F10X_StdPERIIPH\inc • bsp\stm32f10x\libraries\CMSIS\CM3\CoreSupport • bsp\stm32f10x\libraries\CMSIS\CM3\DeviceSupport\ST \STM32F10x • \include • \libcpu\arm\cortex-m3 bsp\stm32f10x\driver
• • • • • • • • • • •
#define RT_USING_MAILBOX #define RT_USING_MESSAGEQUEUE #define RT_USING_MEMPOOL #define RT_USING_HEAP #define RT_USING_SMALL_MEM #define RT_USING_DEVICE #define RT_USING_UART1 #define RT_USING_CONSOLE #define RT_CONSOLE_DEVICE_NAME #define RT_CONSOL4;uart1"
128
• 将rtconfig.h的所在文件夹加入工程设置中的头文件搜索目 录里 • 在startup.c中添加如下: • int rt_application_init() • { • return 0; • } • void rt_hw_usart_init() • { • }
基于STM32单片机的uCOS-II操作系统移植
第6期2020年12月机电元件ELECTROMECHANICALCOMPONENTSVol 40No 6Dec 2020收稿日期:2020-10-20基于STM32单片机的uC/OS-II操作系统移植张中前(贵州航天电器股份有限公司,贵州贵阳,550009) 摘要:网络技术和信息技术的发展,嵌入式系统应用越来越普及,嵌入式设备的应用也越来越多。
uC/OS-II广泛应用于路由器、飞行器及工业控制等。
uC/OS-II操作系统执行效率高,占用存储空间少,具有实时性及可扩展性等优点,在小型嵌入式设备中具有广泛应用。
本文介绍了基于ARMCORTEXM3系列单片机上的uC/OS-II移植,对电子控制组件的设计具有参考作用。
关键词:实时操作系统;uC/OS-II;内存管理;任务管理;STM32;移植Doi:10.3969/j.issn.1000-6133.2020.06.015中图分类号:TN784 文献标识码:A 文章编号:1000-6133(2020)06-0057-051 引言操作系统是裸机的第一层软件,操作系统直接运行在硬件上,上层软件通过提供应用程序接口(API函数),实现对底层硬件的访问,同时,通过操作系统实现对多个上层应用软件(任务)管理,实现对硬件CPU管理、存储管理、I/O接口管理及文件管理,如图1所示。
图1 操作系统功能组成示意图 STM32系列单片机以其优良的价格,大容量的FLASH及RAM存储空间,极易用于较为复杂的控制系统;在STM32单片机上进行uC/OS-II实时操作系统的移植,提高了产品的设计灵活性,实现较为复杂的系统功能;通过将开源的uC/OS-II移植在STM32单片机上,以其较为低廉的硬件成本获得较高的使用性能,具有良好的应用前景。
2 uC/OS-II操作系统2.1 uC/OS-II操作系统的基本特征uC/OS-II是一个完整的、可移植、可固化、可剪裁的基于优先级调度的抢占式实时多任务操作系统;它能够在外界事件或数据产生时,能够接收图2 uC/OS-II文件结构示意图并以足够快的速度响应,其处理的结果又能够在规定的时间内输出,并控制所有实时任务协调、一致运行。
STM32移植uCOS-II
32
2. 安装 MDK,解压外设库和 uCOS-II 源码 3. 创建工程目录结构,如下
4. 复制外设库 � STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下
128
#endif � 打开 os_cfg.h,将 OS_APP_HOOKS_EN 设置为 0 � 打开 main.c,全选删除,并将以下内容复制进去,具体板级代码需要适
当修改
#include "ucos_ii.h" #include "stm32f10x.h"
#define LED_0 0 #define LED_1 1 #define LED_2 2 #define LED_3 3
case LED_3: GPIO_SetBits(GPIOD, GPIO_Pin_7); break;
default: break;
}
}
void led_off(uint32_t n) {
switch (n) {
case LED_0: GPIO_ResetBits(GPIOD, GPIO_Pin_2); break;
所有文件到新建的 Ports 目录下 � Micrium\Software\uCOS-II\Source 下的所有文件到新建的 Source 下 � Micrium\Software\EvalBoards\ST\STM3210B-EVAL\RVMDK\OS-Probe 下
的 app_cfg.h 和 os_cfg.h 到工程目录的 User 中 6. 打开 Keil,创建新工程,选择器件,注意弹出来的是否添加启动文件的询问
STM32移植到GD32(以32的工程为模板简单三步完成移植)
STM32移植到GD32(以32的工程为模板简单三步完成移植)移植STM32工程到GD32平台是一项相对简单的任务,因为两者的硬件架构和内核类似。
在进行移植时,我们只需要对一些寄存器和外设的名称进行适当的更改即可完成移植。
以下是一个简单的三步骤指南,来帮助您完成STM32工程到GD32平台的移植。
第一步:更改寄存器和外设名称在STM32工程中,我们需要对寄存器和外设的名称进行更改,以适应GD32平台。
GD32平台使用了类似的寄存器和外设,但它们的名称可能有所不同。
您需要查阅GD32的参考手册,找到对应的寄存器和外设名称,并在STM32代码中进行相应的更改。
例如,在STM32中,GPIO外设的寄存器名称可能为GPIOA、GPIOB等,但在GD32中,GPIO外设的寄存器名称可能为GPIO0、GPIO1等。
您需要查找GD32的参考手册,找到正确的寄存器名称,并将其替换为相应的STM32代码中的寄存器名称。
第二步:调整时钟和中断配置在STM32和GD32平台上,时钟和中断配置可能略有不同。
在进行移植时,您需要检查和调整代码中的时钟和中断配置,以适应GD32平台的要求。
例如,在STM32中,我们可能使用RCC_PLLConfig函数来配置PLL,但在GD32中,我们可能需要使用零延迟锁相环(ZZPLL)来配置PLL。
您需要查找GD32的参考手册,找到正确的时钟配置函数,并将其替换为相应的STM32代码中的时钟配置函数。
同样地,在移植中,您还需要检查和调整代码中的中断配置,以确保它们与GD32平台兼容。
第三步:验证和调试完成以上两个步骤后,您可以编译和烧录移植后的代码到GD32开发板上进行验证和调试。
您可能需要对一些功能进行逐个测试,以确保它们在GD32平台上正常工作。
在调试过程中,您可能会遇到一些问题和错误。
这是正常现象,您需要逐一解决这些问题,直到移植后的代码在GD32平台上完全正常运行。
总结这是一个简单的三步指南,帮助您将STM32工程移植到GD32平台。
STM32F05x移植GD32F1x0注意事项
STM32F05X移植GD32F1X0注意事项1、安装GD_MDK补丁到MDK的安装目录下2、FLASH算法文件在“GD32F10xxx Keil IDE Config”文件夹中,算法文件需要复拷贝到“ D:\Keil\ARM\Flash ”中;3、选择算法文件(xxx.FLM)For GD32F10xx4,GD32F10xx6,GD32F10xX8,GD32F10xxB, Please select GD32F10xx468B.FLM as Flash programming algorithm.For GD32F10xxC,GD32F10xxD,GD32F10xxE,GD32F10xxF,GD32F10xxG, Please select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.For GD32F10xxI,GD32F10xxK, Pls select the relevant P/N of "32F10xxG" firstly and then select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.For GD32F1x0x4,GD32F1x0x6,GD32F1x0x8 value line series of MCU, Please select the relevant P/N of "32F103xx" firstly and then selectGD32F1x0468.FLM as Flash programming algorithm.4、使用GD 150的demo程序中的外设库替换F030工程中的外设固件,同时替换掉F030工程中的启动文件,并正确选择GD32驱动芯片类型5、修改中断向量设置,因为GD使用的是M3内核所以中断分成抢占优先级和子优先级,程序中需要进行中断分组和中断向量的重新配置,程序中的几个中断向量都需要调整。
STM32F407_DP83848_Lwip移植方法要点
前段时间做项目用到百兆网通信,用到了LWIP,一开始是参照原子的例程做移植,因为原子的例程中使用的是LAN8720,为了改成DP83848,改寄存器地址,改位定义,改速度计算公式,折腾了好多天也没成功,最后只好听从网友的建议,修改ST 官方的一个例程,几天下来,竟然成功了,现在将步骤分享给大家,感觉实际工程中用DP83848的还是大多数..其实本文并不是移植LWIP,只是将ST官方的例程改成我们项目所需要的,然后我们再在这个基础上完成自己的项目即可,这对新接触LWIP又急着做项目的人比较适合,没必要去了解LWIP的具体实现,会用就行了..本文作者:武汉普创科技--易宇--转载请注明出处本人的项目配置:STM32F407VET6 + DP83848C1、从官方网站/document/list/index/category-523下面向STM32F4x7微控制器的LwIP TCP/IP协议栈的演示代码的英文STM32F4x7微控制器的LwIP TCP/IP协议栈的基于官方EVAL开发板的演示代码,显然,我们直接修改这个演示代码要比我们去移植LWIP简单得多。
DM00036052.pdf是演示代码的说明文档。
2、将stsw-stm32070.zip解压得到STM32F4x7_ETH_LwIP_V1.1.0文件夹,下面是STM32F4x7_ETH_LwIP_V1.1.0文件夹架构3、删除_htmresc文件夹,这个文件夹是ST及CMSIS公司logo,没什么用。
4、打开project文件夹,这个文件夹包括两个文件夹:FreeRTOS和Standalone。
FreeRTOS文件夹里的程序示例是基于FreeRTOS系统的LWIP移植示例,这里我们不需要,直接删除。
Standalone文件夹里是一些无操作系统LWIP移植示例程序,在这里我们工程需要的是普通的数据传输,所以只使用到UDP,所以我们只保留udp_echo_client文件夹,其他的都删除掉。
STM32F4 LAN8720A的移植方法
ST中stsw-stm32070的网络例子——将DP83848CVV修改为LAN8720A 在main.h中将LCD注释掉//#define USE_LCD /* enable LCD */Stm32f4的时钟配置首先在startup_stm32f40xx.s中找到芯片上电复位之后做的动作,将进行SystemInitSystemInit()函数在system_stm32f4xx.c中进行了编写同时SystemInit()调用SetSysClock(),也在system_stm32f4xx.c中SetSysClock()配置了PLL的时钟频率,一般都配置为168M,晶振不同的时候只要配置PLL_M的值即可,8MHz晶振就将PLL_M定义为8,25MHz的时候定义为25;当然,SetSysClock()中还进行了时钟源的选择,HSE还是HIS什么的,还有HCLK、PCLK2、PCLK1等,可以查看具体的代码。
时钟配置完成之后,进入main()函数,如前面所介绍,进入main()之前,时钟已经配置为168MHz了。
这里有 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这个函数,看上去是中断优先级的设置,暂且没有去管它,有兴趣的时候可以看下,应该不难;因为这里只是单纯的设置LAN8720A来替代开发板上原先的DP83848CVV,所以主要设置都在ETH_BSP_Config()中,这里设置LAN8720A成功之后,就会去设置LwIP,就不是物理层上的工作了,都是IOS其它传输层、应用层等层的工作。
我们先看看ETH_BSP_Config()中是做了什么工作,这个函数的内容在stm32f4x7_eth_bsp.c中,看文件名bsp就是和最底层外设相关的。
函数首先进行了系统的一个定时器的滴答设置,这个定时器一般给操作系统使用。
这里单纯做为网络设置时候的一些延时使用,和delay差不多,只是使用的是系统定时器这个特殊定时器。
如何从STM32F030C8移植到GD32F130C8
如何从STM32F030C8移植到GD32F130C8
最近公司一个项目要从STM32F030C8移植到GD32F130C8。
第一次做项目的移植,对GD的单片机也不是很了解,写下这篇博客记录我的移植过程。
正在移植的过程中,每天更新,希望自己进步的同时可以给别人一些参考。
这两款单片机的pin脚基本兼容,属于pin对pin。
下面是我的移植路程,(我可能要开始走弯路了,看到这篇文章的大侠少侠们如果有更好的方法请指正)
一、添加芯片类型判断程序:
在库中的启动代码前面加一段,读一下ID code,自动区分一下芯片的厂商和类型,这样就一劳永逸了。
按照ARM 和JEDEC-106 标准,执行下面这个函数
这个程序可以让程序知道当前的芯片是ST的还是GD的。
uint16_t Get_JTAG_ID()
{
if(*(uint8_t *)(0xE00FFFE8 )">{
return ((*(uint8_t *)(0xE00FFFD0 )">((*(uint8_t *)(0xE00FFFE4 )">((*(uint8_t *)(0xE00FFFE8 )
}
return 0;
}
MCUid = Get_JTAG_ID();//启动芯片之前判断芯片是
返回0x041 是ST(ST手册Doc ID 13902 Rev 14 的1055页31.6.2 和31.6.4 ),
返回0x7A3 是GD 。
步步清晰之uCOSII在STM32上的移植
同时,谨以此文献给我尊敬的晓丹同志(LeeDan)。O(∩_∩)O~
============================ Ucosii 在 stm32 上的移植 - 准备工作 ============================
4
步步清晰
◆4.把 App 目录下的所有文件加载到工程里的 APP 下 。 其中 stm32f10x_it.c 是中断服务程序文件,stm32f10x_conf.h 是外设配置文件。
weishao
5. 初始配置 STM32 的标准外设库
事实上,stm32 标准外设库的使用在 stm32f10x_stdperiph_lib_um.chm 中的 How to use the Library 一节中已有说明,下面我把其中的步骤罗列一下:
代家可以回想一有通用寄存器执行完了呢osstarthigoscpupenoscpusysoscpusysoscpusys几个函数o这里最后三个systickhan中断函数的定systickinitickclkfreqsystickclk面我们会自己移植时需要beginendtehookookhookhooknitokookhook数除了osta单看看就应说一说osta代码在正常运一下中断过程器即当前代想回到原来ghrdyvoidndsvhandlerstickhandlestickinitvstickclkfreoscpupend个函数需要注ndler定义定义systickkfreq定义己实现因此askstkinit应该明白了askstkinit运行时一行程当中断发代码的现场来函数执行的void
从STM32F10x系列移植到GD32F10x系列0722
从STM32F10x系列移植到GD32F10x系列目录目录 (1)1.前言 (3)2.硬件差异 (3)3.内部资源对比 (3)4.软件环境设置 (4)4.1.使用Keil开发GD32F10x (4)4.1.1. 在Keil4中添加GD32F10x MCU Device (4)4.1.2. 在Keil5中添加GD32F10x MCU Device (6)4.2.使用GD-Link开发GD32F10x (8)4.3.使用J-Link开发GD32F10x (10)4.4.使用IAR开发GD32F10x (12)4.4.1. 在IAR中添加GD32F10x MCU Device (12)4.4.2.在IAR中编译调试GD32F10x (13)5.0.外设移植 (16)5.1.System (16)5.1.1.HSE注意事项 (16)5.1.2.如何通过软件区分GD32和STM32 (16)5.1.3.GD32F10x Flash取指零等待,软件方面注意事项 (16)5.1.4.GD32F10x上电启动异常常见原因 (16)5.1.5.MCU无法正常使用SWD下载程序 (17)5.1.6.代码超过256K后执行速度慢 (17)5.2.GPIO方面问题 (17)5.2.1.EXTI中断相应异常(仅128K及以下产品适用) (17)5.2.2.PA8相关特性(仅128K及以下产品适用) (17)5.2.3.PB1和PB2特性(仅128K及以下产品适用) (18)5.2.4.GPIO上拉输入IO口电平只有2.6V (18)5.3.TIM注意事项 (18)5.3.1.TIM中断标志位清除问题 (18)5.3.2.TIM输入捕获或者正交编码配置问题 (18)5.4.CAN (18)5.4.1.CAN离线后无法自动恢复 (18)5.4.2.CAN接收异常,接收两帧数据会丢一包数据 (18)5.5.ADC (19)5.5.1.ADC采集数据异常问题分析 (19)5.5.2.ADC1和ADC2同步模式下,ADC2注入组无数据 (19)5.5.3.ADC 查询法采集数据,出现通道错乱的情况 (19)5.5.4.ADC工作在DMA模式下通道数据错乱 (19)5.5.5.ADC_CR2中的ADCON使用方法(仅128K及以下产品适用) (19)5.5.6.ADC_SR中的EOC标志位使用(仅128K及以下产品适用) (19)5.6.SPI (20)5.6.1.CLK管脚重复配置问题 (20)5.6.2.SPI主机模式,数据收发异常 (20)5.6.3.SPI通信BSY标志位 (20)5.6.4.SPI从机模式管脚模式 (21)ART (21)ART连续发送数据问题 (21)ART停止位问题 (21)5.8.Flash方面问题 (21)5.8.1.Flash函数修改要点 (21)5.8.2.Flash操作地址问题 (22)B方面问题 (22)B 注意事项 (22)1.前言GD32F10x是兆易创新于2013年推出的Cortex M3系列产品,该系列瞄准市场上最热的STM32F10x系列大蛋糕,与STM32F10x做硬件兼容,自推出以来在市场上获得强烈反响。
将V2.92移植到STM32F107ZET6
说明:将V2.92移植到STM32F107ZET6和STM32F107VCT6.关于uCOS的移植,其实要说难也难,要说简单也简单。
简单的是现在官方都已经移植好了,难的是自己写那个汇编的移植代码。
废话不多说,直接上移植步骤和注意事项。
第一步:到官网下载最新版本的uCOS-II V2.92,在uCOS-II的文件夹下有三个这样的文件主要有这两个移植的文件,在DOC文件夹下主要是移植的说明和性能的测试结果,其中uCOS-II-RefMan和uCOS-II-CfgMan比较有参考价值,第一个文件对每个函数进行了说明,重要的是给出了大部分函数的应用实例。
第二个就是我们移植好后的配置文件了。
还有一个重要的文件就是很重要的文件就是AN-1018,这个是官方的移植说明(针对的Cortex-M3处理器)。
第二步:Source文件夹下面都是源代码,不用管他们,Ports文件夹下面就是我们移植的时候需要弄的文件了,有以下几个文件,os_cpu.h,os_cpu_c.c,os_cpu_a.asm这三个文件在移植过程中最重要。
os_cpu.h:定义数据类型,处理器相关代码和声明函数原型。
#ifndef OS_CPU_H#define OS_CPU_H#ifdef OS_CPU_GLOBALS#define OS_CPU_EXT#else#define OS_CPU_EXT extern#endif#ifndef OS_CPU_EXCEPT_STK_SIZE#define OS_CPU_EXCEPT_STK_SIZE 128u //默认的异常堆栈大小#endiftypedef unsigned char BOOLEAN; //数据类型的说明typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned short INT16U;typedef signed short INT16S;typedef unsigned int INT32U;typedef signed int INT32S;typedef float FP32;typedef double FP64;typedef unsigned int OS_STK;typedef unsigned int OS_CPU_SR;临界代码和其它内核一样,μC/OS-Ⅱ为了处理临界段代码需要关中断,处理完毕后再开中断。
STM32系列MCU不同型号的移植步骤解析
STM32系列MCU不同型号的移植步骤解析移植STM32系列MCU的步骤可以分为以下几个方面:硬件准备、开发环境配置、移植BSP(板级支持包)、移植外设驱动、移植应用程序和调试验证。
一、硬件准备1.选择目标STM32MCU型号,并且获取相应的芯片手册和参考资料。
2.根据芯片手册,了解芯片的引脚定义、功能分配、时钟源和复位方式等。
3.准备开发板,确保与目标MCU兼容,并且可以通过JTAG/SWD等工具进行调试。
二、开发环境配置1. 安装相应版本的开发工具,例如 STM32CubeIDE、Keil MDK 或者IAR等。
2.根据MCU型号,选择相应的启动文件、链接脚本和编译器等配置参数。
3. 配置调试工具,如 ST-LINK、J-Link 或者 BlackMagicProbe等。
三、移植BSP(板级支持包)1.了解目标开发板的硬件资源,包括GPIO、串口、定时器等外设的定义和使用方式。
2.根据目标MCU和开发板的硬件资源,编写对应的BSP配置文件,包括复位、时钟初始化、外设配置等。
3.配置并编译BSP驱动程序,确保能够正确初始化和控制硬件资源。
四、移植外设驱动1. 根据需要,选择对应的外设驱动库,例如 STM32Cube HAL 或者自行编写驱动程序。
2.根据目标MCU的硬件资源和外设的技术要求,编写对应的外设驱动程序。
3.配置并编译外设驱动程序,确保能够正确初始化和控制外设。
五、移植应用程序1.根据具体应用需求,编写应用程序的主代码,包括初始化、逻辑处理和外设控制等。
2.根据硬件资源和外设驱动的要求,调用BSP和外设驱动函数来初始化和控制相关的硬件资源和外设。
3.配置并编译应用程序代码,生成可执行文件。
六、调试验证2.使用调试工具来烧录应用程序代码到目标MCU,并且启动调试模式。
3.通过调试工具,观察应用程序的执行情况、外设的状态和数据传输等,进行验证和调试。
在移植的过程中,需要仔细阅读芯片手册、参考资料和开发工具的文档,根据具体情况做出相应的配置和调整。
STM32F05x移植GD32F1x0注意事项
STM32F05X移植GD32F1X0注意事项1、安装GD_MDK补丁到MDK的安装目录下2、FLASH算法文件在“GD32F10xxx Keil IDE Config”文件夹中,算法文件需要复拷贝到“ D:\Keil\ARM\Flash ”中;3、选择算法文件(xxx.FLM)For GD32F10xx4,GD32F10xx6,GD32F10xX8,GD32F10xxB, Please select GD32F10xx468B.FLM as Flash programming algorithm.For GD32F10xxC,GD32F10xxD,GD32F10xxE,GD32F10xxF,GD32F10xxG, Please select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.For GD32F10xxI,GD32F10xxK, Pls select the relevant P/N of "32F10xxG" firstly and then select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.For GD32F1x0x4,GD32F1x0x6,GD32F1x0x8 value line series of MCU, Please select the relevant P/N of "32F103xx" firstly and then selectGD32F1x0468.FLM as Flash programming algorithm.4、使用GD 150的demo程序中的外设库替换F030工程中的外设固件,同时替换掉F030工程中的启动文件,并正确选择GD32驱动芯片类型5、修改中断向量设置,因为GD使用的是M3内核所以中断分成抢占优先级和子优先级,程序中需要进行中断分组和中断向量的重新配置,程序中的几个中断向量都需要调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相同
三、 如何使用 IAP 1、 设置超级终端 波特率选择为 115200 2、 需要下载时将 Tamper 键按住 再按下复位键 超级终端打印出帮助信息 3、 选择下发文件,协议选择 Y_modem,选择下发。
延时修改
void _delay_ms(u16 delayTime) {
g_delayTimeOut = 0; //TIM2->ARR = delayTime*2; TIM2->ARR = delayTime;
TIM_Cmd(TIM2, ENABLE); while(!g_delayTimeOut) { } TIM_Cmd(TIM2, DISABLE); }
文件:misc.h 具体修改如下:
图5 与以下配置一致:
图6
IAP 设置步骤
一、 IAP 工程设置 1、修改 main 中的按键触发键 2、修改下载串口 二、 下载工程设置 1、修改程序入口地址
查找 NVIC_VectTab_FLASH
将其修改为:0x08002000
2、修改 options 1) 打开 Target 选项卡 在 IROM1 中将 Start 和 Size 分别修改为 0x08002000 和 0x3E00 2) 打开 User 选项卡 在 Run User Programs Before Build/Rebuild 中,勾选 Run#1,并在
第二步
修改宏定义:
图1 或者修改 stm32f10x.h 具体修改如下:
图2
第三步
修改系统主频率: 文件:system_stm32f10x.c 具体修改如下:
图3
第四步
修改外部晶振源: 文件:stm32f10x.h 具体修改如下:
图4
第五步
定时器需要根据以上修改的系统主频率进行对应的修改。
其他: 修改 Fla 36Mhz, 101
使用 J-Link 调试设置
图7
J-Link 不能正常连接目标板
可以尝试一下方法(恢复出厂设置): 图8
STM32 系列 MCU 不同型号的移植
第一步
更换启动文件:
startup_stm32f10x_cl.s startup_stm32f10x_hd.s
startup_stm32f10x_ld.s startup_stm32f10x_md.s startup_stm32f10x_xl.s
互联型的 MCU,例如 STM32F107 大 容 量 Flash : 256K~512K , 例 如 STM32F101RC 小容量 Flash:64K 中容量 Flash:128K