基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(二)FreeRTOS v9.0.0 的移植

本文主要是介绍基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(二)FreeRTOS v9.0.0 的移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文详细绍了基于STM32F107VC的金牛开发板的FreeRTOS v9.0.0 的移植过程。

**IDE环境为: MDK v5.23;
硬件环境:基于STM32F107VC的金牛开发板;
所用固件库版本号是STM32F10X_StdPeriph_Lib_V3.5.0**

下载工具用的是开发板自带的D版的Jlink。

一、工程模板的建立:

(参考:http://blog.csdn.net/u014563989/article/details/51000138)
STM32工程模板用野火M3工程模板作为基础,在此之上做一些更改:
下载地址:https://pan.baidu.com/share/link?shareid=4218340238&uk=1194094710&fid=909646254491523

这里写图片描述

然后改一下文件名为STM32F107_FreeRTOS_v9.0.0:

这里写图片描述

进去之后看到:

这里写图片描述

其结构内容如下:
CMSIS:微控制器软件接口标准库相关文件(详细解释请参考:http://blog.chinaunix.net/uid-27710926-id-4231846.html);
FWlib:固件库(版本号为v3.5.0);
Listing:编译链接信息列表;
Output:编译中间文件和bin档(或hex档)。
USER:工程模板和用户源代码。

下面对它的目录结构做如下修改:
1、把USER文件夹改为project,意为此处放置工程文件,而不是放源代码;
2、增加BSP文件夹,作为板卡支持包目录,放置与开发板特定配置下的相关源代码;
3、增加APP文件夹,作为应用软件源代码目录;
4、增加third_party文件夹,作为第三方库管理目录,放置第三方库源码。

改后目录结构如图:

这里写图片描述

接下来,把相应文件做调整,并修改工名:
把project目录下的main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.h四个文件剪切到BSP目录下:

这里写图片描述

project目录下只留下扩展名为.uvopt和.ubproj的两个文件,其他的都删除:

这里写图片描述

然后把两个文件都改名为FreeRTOS_v9.0.0,如图:

这里写图片描述

接下来双击FreeRTOS_v9.0.0.uvproj文件,打开工程:

这里写图片描述

点击品字形图标:

这里写图片描述

看到如下对话框:

这里写图片描述

然后双击左边那个Target1,改名为FreeRTOS_v9.0.0:

这里写图片描述

中间的列表删掉STARTUPCODE,双击修改USER为BSP,并在右边的列表中的main.c和stm32f10x_it.c文件删除,重新加入(两个文件已经由前面的步骤放置在了电脑的BSP目录下):

这里写图片描述

然后,把金牛板的启动文件STM32F10x.s修改一下放置在BSP目录下,该文件内容如下:

;/*****************************************************************************/
;/* STM32F10x.s: Startup file for ST STM32F10x device series                  */
;/*****************************************************************************/
;/* <<< Use Configuration Wizard in Context Menu >>>                          */
;/*****************************************************************************/
;/* This file is part of the uVision/ARM development tools.                   */
;/* Copyright (c) 2005-2007 Keil Software. All rights reserved.               */
;/* This software may only be used under the terms of a valid, current,       */
;/* end user licence from KEIL for a compatible version of KEIL software      */
;/* development tools. Nothing else gives you the right to use this software. */
;/*****************************************************************************/;// <h> Stack Configuration
;//   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;// </h>Stack_Size      EQU     0x00000400AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp;// <h> Heap Configuration
;//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
;// </h>Heap_Size       EQU     0x00000200AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit;IMPORT xPortPendSVHandler;IMPORT xPortSysTickHandler;IMPORT vPortSVCHandler;IMPORT vUARTInterruptHandler;IMPORT TIM4_IRQHandler;IMPORT vTimer2IntHandlerPRESERVE8THUMB; Vector Table Mapped to Address 0 at ResetAREA    RESET, DATA, READONLYEXPORT  __VectorsEXPORT  __Vectors_EndEXPORT  __Vectors_Size__Vectors       DCD     __initial_sp              ; Top of StackDCD     Reset_Handler             ; Reset HandlerDCD     NMI_Handler               ; NMI HandlerDCD     HardFault_Handler         ; Hard Fault HandlerDCD     MemManage_Handler         ; MPU Fault HandlerDCD     BusFault_Handler          ; Bus Fault HandlerDCD     UsageFault_Handler        ; Usage Fault HandlerDCD     0                         ; ReservedDCD     0                         ; ReservedDCD     0                         ; ReservedDCD     0                         ; ReservedDCD     0                         ;vPortSVCHandler           ; SVCall HandlerDCD     DebugMon_Handler          ; Debug Monitor HandlerDCD     0                         ; ReservedDCD     0                         ;xPortPendSVHandler        ; PendSV HandlerDCD     0                         ;xPortSysTickHandler       ; SysTick Handler; External InterruptsDCD     WWDG_IRQHandler           ; Window WatchdogDCD     PVD_IRQHandler            ; PVD through EXTI Line detectDCD     TAMPER_IRQHandler         ; TamperDCD     RTC_IRQHandler            ; RTCDCD     FLASH_IRQHandler          ; FlashDCD     RCC_IRQHandler            ; RCCDCD     EXTI0_IRQHandler          ; EXTI Line 0DCD     EXTI1_IRQHandler          ; EXTI Line 1DCD     EXTI2_IRQHandler          ; EXTI Line 2DCD     EXTI3_IRQHandler          ; EXTI Line 3DCD     EXTI4_IRQHandler          ; EXTI Line 4DCD     DMAChannel1_IRQHandler    ; DMA Channel 1DCD     DMAChannel2_IRQHandler    ; DMA Channel 2DCD     DMAChannel3_IRQHandler    ; DMA Channel 3DCD     DMAChannel4_IRQHandler    ; DMA Channel 4DCD     DMAChannel5_IRQHandler    ; DMA Channel 5DCD     DMAChannel6_IRQHandler    ; DMA Channel 6DCD     DMAChannel7_IRQHandler    ; DMA Channel 7DCD     ADC_IRQHandler            ; ADCDCD     USB_HP_CAN_TX_IRQHandler  ; USB High Priority or CAN TXDCD     USB_LP_CAN_RX0_IRQHandler ; USB Low  Priority or CAN RX0DCD     CAN_RX1_IRQHandler        ; CAN RX1DCD     CAN_SCE_IRQHandler        ; CAN SCEDCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5DCD     TIM1_BRK_IRQHandler       ; TIM1 BreakDCD     TIM1_UP_IRQHandler        ; TIM1 UpdateDCD     TIM1_TRG_COM_IRQHandler   ; TIM1 Trigger and CommutationDCD     TIM1_CC_IRQHandler        ; TIM1 Capture Compare;DCD     0                         ;vTimer2IntHandler         ; TIM2DCD     TIM3_IRQHandler           ; TIM3DCD     0                         ;TIM4_IRQHandler           ; TIM4DCD     I2C1_EV_IRQHandler        ; I2C1 EventDCD     I2C1_ER_IRQHandler        ; I2C1 ErrorDCD     I2C2_EV_IRQHandler        ; I2C2 EventDCD     I2C2_ER_IRQHandler        ; I2C2 ErrorDCD     SPI1_IRQHandler           ; SPI1DCD     SPI2_IRQHandler           ; SPI2DCD     0                         ;vUARTInterruptHandler     ; USART1DCD     USART2_IRQHandler         ; USART2DCD     USART3_IRQHandler         ; USART3DCD     EXTI15_10_IRQHandler      ; EXTI Line 15..10DCD     RTCAlarm_IRQHandler       ; RTC Alarm through EXTI LineDCD     USBWakeUp_IRQHandler      ; USB Wakeup from suspend;-------------------added @2017.08.1DCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     TIM5_IRQHandler            ; TIM5DCD     SPI3_IRQHandler            ; SPI3DCD     UART4_IRQHandler           ; UART4DCD     UART5_IRQHandler           ; UART5DCD     TIM6_IRQHandler            ; TIM6DCD     TIM7_IRQHandler            ; TIM7DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3DCD     DMA2_Channel4_IRQHandler   ; DMA2 Channel4DCD     DMA2_Channel5_IRQHandler   ; DMA2 Channel5DCD     0                          ;ETH_IRQHandler             ; EthernetDCD     ETH_WKUP_IRQHandler        ; Ethernet Wakeup through EXTI lineDCD     CAN2_TX_IRQHandler         ; CAN2 TXDCD     CAN2_RX0_IRQHandler        ; CAN2 RX0DCD     CAN2_RX1_IRQHandler        ; CAN2 RX1DCD     CAN2_SCE_IRQHandler        ; CAN2 SCEDCD     OTG_FS_IRQHandler          ; USB OTG FS
__Vectors_End__Vectors_Size  EQU  __Vectors_End - __VectorsAREA    |.text|, CODE, READONLY; Reset handler
Reset_Handler   PROCEXPORT  Reset_Handler             [WEAK]IMPORT  SystemInitIMPORT  __mainLDR     R0, =SystemInitBLX     R0LDR     R0, =__mainBX      R0ENDP; Dummy Exception Handlers (infinite loops which can be modified)                NMI_Handler     PROCEXPORT  NMI_Handler               [WEAK]B       .ENDP
HardFault_Handler\PROCEXPORT  HardFault_Handler         [WEAK]B       .ENDP
MemManage_Handler\PROCEXPORT  MemManage_Handler         [WEAK]B       .ENDP
BusFault_Handler\PROCEXPORT  BusFault_Handler          [WEAK]B       .ENDP
UsageFault_Handler\PROCEXPORT  UsageFault_Handler        [WEAK]B       .ENDP
SVC_Handler     PROCEXPORT  SVC_Handler               [WEAK]B       .ENDP
DebugMon_Handler\PROCEXPORT  DebugMon_Handler          [WEAK]B       .ENDP
PendSV_Handler  PROCEXPORT  PendSV_Handler            [WEAK]B       .ENDP
SysTick_Handler PROCEXPORT  SysTick_Handler           [WEAK]B       .ENDPDefault_Handler PROCEXPORT  WWDG_IRQHandler           [WEAK]EXPORT  PVD_IRQHandler            [WEAK]EXPORT  TAMPER_IRQHandler         [WEAK]EXPORT  RTC_IRQHandler            [WEAK]EXPORT  FLASH_IRQHandler          [WEAK]EXPORT  RCC_IRQHandler            [WEAK]EXPORT  EXTI0_IRQHandler          [WEAK]EXPORT  EXTI1_IRQHandler          [WEAK]EXPORT  EXTI2_IRQHandler          [WEAK]EXPORT  EXTI3_IRQHandler          [WEAK]EXPORT  EXTI4_IRQHandler          [WEAK]EXPORT  DMAChannel1_IRQHandler    [WEAK]EXPORT  DMAChannel2_IRQHandler    [WEAK]EXPORT  DMAChannel3_IRQHandler    [WEAK]EXPORT  DMAChannel4_IRQHandler    [WEAK]EXPORT  DMAChannel5_IRQHandler    [WEAK]EXPORT  DMAChannel6_IRQHandler    [WEAK]EXPORT  DMAChannel7_IRQHandler    [WEAK]EXPORT  ADC_IRQHandler            [WEAK]EXPORT  USB_HP_CAN_TX_IRQHandler  [WEAK]EXPORT  USB_LP_CAN_RX0_IRQHandler [WEAK]EXPORT  CAN_RX1_IRQHandler        [WEAK]EXPORT  CAN_SCE_IRQHandler        [WEAK]EXPORT  EXTI9_5_IRQHandler        [WEAK]EXPORT  TIM1_BRK_IRQHandler       [WEAK]EXPORT  TIM1_UP_IRQHandler        [WEAK]EXPORT  TIM1_TRG_COM_IRQHandler   [WEAK]EXPORT  TIM1_CC_IRQHandler        [WEAK]EXPORT  TIM2_IRQHandler           [WEAK]EXPORT  TIM3_IRQHandler           [WEAK];EXPORT  TIM4_IRQHandler           [WEAK]EXPORT  I2C1_EV_IRQHandler        [WEAK]EXPORT  I2C1_ER_IRQHandler        [WEAK]EXPORT  I2C2_EV_IRQHandler        [WEAK]EXPORT  I2C2_ER_IRQHandler        [WEAK]EXPORT  SPI1_IRQHandler           [WEAK]EXPORT  SPI2_IRQHandler           [WEAK]EXPORT  USART1_IRQHandler         [WEAK]EXPORT  USART2_IRQHandler         [WEAK]EXPORT  USART3_IRQHandler         [WEAK]EXPORT  EXTI15

这篇关于基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(二)FreeRTOS v9.0.0 的移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652517

相关文章

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.