【添加】FreeRTOS Demo
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include <bsp.h>
|
||||
#include <cm_backtrace.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define HARDWARE_VERSION "V1.0.0"
|
||||
#define SOFTWARE_VERSION "V0.1.0"
|
||||
|
||||
static void AppTaskStart(void *p_arg);
|
||||
extern void fault_test_by_unalign(void);
|
||||
extern void fault_test_by_div0(void);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
BSP_Init();
|
||||
/* CmBacktrace initialize */
|
||||
cm_backtrace_init("CmBacktrace", HARDWARE_VERSION, SOFTWARE_VERSION);
|
||||
|
||||
xTaskCreate( AppTaskStart, "app_start", 40, NULL, tskIDLE_PRIORITY+2, NULL );
|
||||
|
||||
printf("System initialize finish. Starting..\r\n");
|
||||
|
||||
vTaskStartScheduler();
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
static void AppTaskStart (void *p_arg)
|
||||
{
|
||||
// fault_test_by_unalign();
|
||||
fault_test_by_div0();
|
||||
|
||||
while (1) {
|
||||
LED_RUN_ON;
|
||||
vTaskDelay(500/portTICK_RATE_MS);
|
||||
LED_RUN_OFF;
|
||||
vTaskDelay(500/portTICK_RATE_MS);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* fault_test.c
|
||||
*
|
||||
* Created on: 2016/12/25
|
||||
* Author: Armink
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void fault_test_by_unalign(void) {
|
||||
volatile int * SCB_CCR = (volatile int *) 0xE000ED14; // SCB->CCR
|
||||
volatile int * p;
|
||||
volatile int value;
|
||||
|
||||
*SCB_CCR |= (1 << 3); /* bit3: UNALIGN_TRP. */
|
||||
|
||||
p = (int *) 0x00;
|
||||
value = *p;
|
||||
printf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
|
||||
|
||||
p = (int *) 0x04;
|
||||
value = *p;
|
||||
printf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
|
||||
|
||||
p = (int *) 0x03;
|
||||
value = *p;
|
||||
printf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
|
||||
}
|
||||
|
||||
void fault_test_by_div0(void) {
|
||||
volatile int * SCB_CCR = (volatile int *) 0xE000ED14; // SCB->CCR
|
||||
int x, y, z;
|
||||
|
||||
*SCB_CCR |= (1 << 4); /* bit4: DIV_0_TRP. */
|
||||
|
||||
x = 10;
|
||||
y = 0;
|
||||
z = x / y;
|
||||
printf("z:%d\n", z);
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file Project/Template/stm32f10x_it.c
|
||||
* @author MCD Application Team
|
||||
* @version V3.1.0
|
||||
* @date 06/19/2009
|
||||
* @brief Main Interrupt Service Routines.
|
||||
* This file provides template for all exceptions handler and
|
||||
* peripherals interrupt service routine.
|
||||
******************************************************************************
|
||||
* @copy
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
||||
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
|
||||
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
|
||||
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
|
||||
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2>
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stm32f10x_it.h>
|
||||
#include <bsp.h>
|
||||
|
||||
|
||||
/** @addtogroup Template_Project
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
/* Private functions ---------------------------------------------------------*/
|
||||
|
||||
/******************************************************************************/
|
||||
/* Cortex-M3 Processor Exceptions Handlers */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles NMI exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void NMI_Handler(void)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Memory Manage exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void MemManage_Handler(void)
|
||||
{
|
||||
/* Go to infinite loop when Memory Manage exception occurs */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Bus Fault exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void BusFault_Handler(void)
|
||||
{
|
||||
/* Go to infinite loop when Bus Fault exception occurs */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Usage Fault exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void UsageFault_Handler(void)
|
||||
{
|
||||
/* Go to infinite loop when Usage Fault exception occurs */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles SVCall exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
//void SVC_Handler(void)
|
||||
//{
|
||||
//}
|
||||
|
||||
/**
|
||||
* @brief This function handles Debug Monitor exception.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void DebugMon_Handler(void)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the timer interrupt service routine.
|
||||
*
|
||||
*/
|
||||
//void SysTick_Handler(void)
|
||||
//{
|
||||
//}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : WWDG_IRQHandler
|
||||
* Description : This function handles WWDG interrupt request.
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void WWDG_IRQHandler(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM4_IRQHandler
|
||||
* Description : This function handles TIM2 global interrupt request.
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM4_IRQHandler(void)
|
||||
{
|
||||
|
||||
}
|
||||
/******************************************************************************/
|
||||
/* STM32F10x Peripherals Interrupt Handlers */
|
||||
/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
|
||||
/* available peripheral interrupt handler's name please refer to the startup */
|
||||
/* file (startup_stm32f10x_xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
|
||||
Reference in New Issue
Block a user