新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2020-1-6
- 在线时间
- 8 小时
|
1金钱
用了原子哥的例程,就是将芯片改成了R8T6,程序总是会进入HardFault_Handler,程序很简单就是点亮LED
// main.c
#include "main_include.h"
//START 任务
#define TASK_START_PRIO 9 ///开始任务的优先级为最低
#define TASK_START_STK_SIZE 128
OS_STK TASK_START_STK[TASK_START_STK_SIZE];
void Task_Start(void *pdata);
//START 任务
#define TASK_LED_PRIO 1 ///开始任务的优先级为最低
#define TASK_LED_STK_SIZE 128
OS_STK TASK_LED_STK[TASK_START_STK_SIZE];
void Task_LED(void *pdata);
int main(void)
{
SystemInit();
delay_init(); //延时初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
OSInit(); //UCOS初始化
OSTaskCreate(Task_Start, (void*)0, (OS_STK*)&TASK_START_STK[TASK_START_STK_SIZE - 1], TASK_START_PRIO); //创建开始任务
OSStart(); //开始任务
}
//开始任务
void Task_Start(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit(); //开启统计任务
OS_ENTER_CRITICAL(); //进入临界区(关闭中断)
OSTaskCreate(Task_LED, (void*)0, (OS_STK*)&TASK_LED_STK[TASK_LED_STK_SIZE - 1], TASK_LED_PRIO);//创建LED0任务
OS_EXIT_CRITICAL(); //退出临界区(开中断)
}
void Task_LED(void *pdata)
{
LED_Task(); //退出临界区(开中断)
}
// LED.c
#include "led.h"
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //LED-->PA.12 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.12
GPIO_SetBits(GPIOA, GPIO_Pin_12); //PA.12 输出高
}
//LED任务函数
void LED_Task(void)
{
LED_Init();
while(1)
{
LED_RUN =~ LED_RUN;
delay_ms(500);
}
}
Program Size: Code=13176 RO-data=524 RW-data=116 ZI-data=5348
|
|