【添加】FreeRTOS Demo
This commit is contained in:
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* BOARD SUPPORT PACKAGE
|
||||
*
|
||||
* ST Microelectronics STM32
|
||||
* with the
|
||||
* STM3210B-EVAL Evaluation Board
|
||||
*
|
||||
* Filename : bsp.c
|
||||
* Version : V1.00
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#define BSP_MODULE
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
|
||||
#include <bsp.h>
|
||||
#include <stdio.h>
|
||||
#include <cm_backtrace.h>
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL TABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#define DWT_CR *(CPU_REG32 *)0xE0001000
|
||||
#define DWT_CYCCNT *(CPU_REG32 *)0xE0001004
|
||||
#define DEM_CR *(CPU_REG32 *)0xE000EDFC
|
||||
#define DEM_CR_TRCENA (1 << 24)
|
||||
#define DWT_CR_CYCCNTENA (1 << 0)
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* RCC configuration
|
||||
*/
|
||||
static void RCC_Configuration(void)
|
||||
{
|
||||
//下面是给各模块开启时钟
|
||||
//启动GPIO
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
|
||||
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | \
|
||||
RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOG,
|
||||
ENABLE);
|
||||
|
||||
//启动AFIO
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
||||
//启动USART1时钟
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||
//启动USART2时钟
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
|
||||
//启动DMA时钟
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
|
||||
/* Enable ADC1 and GPIOC clock */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
||||
/* Enable WWDG clock */
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* NVIC Configuration
|
||||
*/
|
||||
static void NVIC_Configuration(void)
|
||||
{
|
||||
#if defined(VECT_TAB_RAM)
|
||||
// Set the Vector Table base location at 0x20000000
|
||||
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x00);
|
||||
#elif defined(VECT_TAB_FLASH)
|
||||
// Set the Vector Table base location at 0x08000000
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);
|
||||
#elif defined(VECT_TAB_USER)
|
||||
// Set the Vector Table base location by user
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, USER_VECTOR_TABLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* GPIO Configuration
|
||||
*/
|
||||
static void GPIO_Configuration(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOF, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOG, &GPIO_InitStructure);
|
||||
|
||||
/******************system run led*******************/
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
|
||||
/* USART1_TX */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
/* USART1_RX */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : USART1_Configuration
|
||||
* Description : USART1 Configuration
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void USART1_Configuration(void)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
|
||||
USART_InitStructure.USART_BaudRate = 115200;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
|
||||
USART_Init(USART1, &USART_InitStructure);
|
||||
|
||||
USART_Cmd(USART1, ENABLE);
|
||||
|
||||
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
|
||||
}
|
||||
|
||||
int fputc(int ch, FILE *f)
|
||||
{
|
||||
USART_SendData(USART1, (uint8_t) ch);
|
||||
/* Loop until the end of transmission */
|
||||
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
|
||||
{}
|
||||
return ch;
|
||||
}
|
||||
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
|
||||
while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET))
|
||||
{
|
||||
}
|
||||
|
||||
return (USART_ReceiveData(USART1));
|
||||
}
|
||||
|
||||
void assert_failed(u8* file, u32 line)
|
||||
{
|
||||
/* User can add his own implementation to report the file name and line number,
|
||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
||||
/* Infinite loop */
|
||||
cm_backtrace_assert(cmb_get_sp());
|
||||
printf("assert failed at %s:%d \n", file, line);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
|
||||
void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName )
|
||||
{
|
||||
printf( "OverflowHook in %s \r\n", pcTaskName);
|
||||
while(1);
|
||||
}
|
||||
|
||||
void delay(uint32_t nCount)
|
||||
{
|
||||
for(; nCount!= 0; nCount--);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* BSP_Init()
|
||||
*
|
||||
* Description : Initialize the Board Support Package (BSP).
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Return(s) : none.
|
||||
*
|
||||
* Caller(s) : Application.
|
||||
*
|
||||
* Note(s) : (1) This function SHOULD be called before any other BSP function is called.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void BSP_Init (void)
|
||||
{
|
||||
RCC_Configuration();
|
||||
NVIC_Configuration();
|
||||
USART1_Configuration();
|
||||
GPIO_Configuration();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
#ifndef BSP_PRESENT
|
||||
#define BSP_PRESENT
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stm32f10x_conf.h>
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
// <o> Internal SRAM memory size[Kbytes] <8-64>
|
||||
// <i>Default: 64
|
||||
#define STM32_SRAM_SIZE 64
|
||||
#define STM32_SRAM_END (SRAM_BASE + STM32_SRAM_SIZE * 1024)
|
||||
|
||||
#define VECT_TAB_FLASH /* use Flash to store vector table */
|
||||
|
||||
#define LED_RUN_ON GPIO_SetBits (GPIOB,GPIO_Pin_0) //RUN
|
||||
#define LED_RUN_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_0) //RUN
|
||||
|
||||
/*********************************************************************************************************/
|
||||
/** MACRO'S */
|
||||
/***********************************************************************************************************/
|
||||
|
||||
|
||||
/***********************************************************************************************************/
|
||||
/* DATA TYPES */
|
||||
/***********************************************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
**********************************************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void BSP_Init(void);
|
||||
void delay(uint32_t nCount);
|
||||
|
||||
void IWDG_Feed(void);
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INTERRUPT SERVICES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#endif /* End of module include. */
|
||||
@@ -0,0 +1,41 @@
|
||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||
/*-Editor annotation file-*/
|
||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
|
||||
/* software version and hardware version store start address */
|
||||
define symbol __ICFEDIT_version_start__ = __ICFEDIT_intvec_start__ + 512;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = __ICFEDIT_intvec_start__;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF;
|
||||
/*-Sizes-*/
|
||||
define symbol __ICFEDIT_size_cstack__ = 0x800;
|
||||
define symbol __ICFEDIT_size_heap__ = 0x800;
|
||||
|
||||
/**** End of ICF editor section. ###ICF###*/
|
||||
|
||||
define memory mem with size = 4G;
|
||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||
|
||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
||||
place in ROM_region { readonly };
|
||||
place in RAM_region { readwrite,
|
||||
block CSTACK, block HEAP };
|
||||
|
||||
/* armink add for version storage */
|
||||
keep { section .version };
|
||||
place at address mem:__ICFEDIT_version_start__ { readonly section .version };
|
||||
|
||||
/* armink add for rtt finsh */
|
||||
keep { section FSymTab };
|
||||
keep { section VSymTab };
|
||||
@@ -0,0 +1,41 @@
|
||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||
/*-Editor annotation file-*/
|
||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
|
||||
/* software version and hardware version store start address */
|
||||
define symbol __ICFEDIT_version_start__ = __ICFEDIT_intvec_start__ + 512;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = __ICFEDIT_intvec_start__;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF;
|
||||
/*-Sizes-*/
|
||||
define symbol __ICFEDIT_size_cstack__ = 0x1000;
|
||||
define symbol __ICFEDIT_size_heap__ = 0x1000;
|
||||
|
||||
/**** End of ICF editor section. ###ICF###*/
|
||||
|
||||
define memory mem with size = 4G;
|
||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||
|
||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
||||
place in ROM_region { readonly };
|
||||
place in RAM_region { readwrite,
|
||||
block CSTACK, block HEAP };
|
||||
|
||||
/* armink add for version storage */
|
||||
keep { section .version };
|
||||
place at address mem:__ICFEDIT_version_start__ { readonly section .version };
|
||||
|
||||
/* armink add for rtt finsh */
|
||||
keep { section FSymTab };
|
||||
keep { section VSymTab };
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
#ifndef TYPES_H_
|
||||
#define TYPES_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
typedef int bool_t; /**< boolean type */
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#define success 0
|
||||
#define fail 1
|
||||
|
||||
|
||||
#ifndef disable
|
||||
#define disable 0
|
||||
#endif
|
||||
|
||||
#ifndef enable
|
||||
#define enable 1
|
||||
#endif
|
||||
|
||||
#endif /* TYPES_H_ */
|
||||
Reference in New Issue
Block a user