新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2023-2-22
- 在线时间
- 1 小时
|
1金钱
debug调试时进入死循环void HardFault_Handler(void)
怎么解决呢
以下是代码:
#define START_TASK_PRIO 1 /* 任务优先级 */
#define START_STK_SIZE 512 /* 任务堆栈大小 */
TaskHandle_t StartTask_Handler; /* 任务句柄 */
void start_task(void *pvParameters); /* 任务函数 */
#define TASK_LED_PRIO 2 /* 任务优先级 */
#define TASK_LED_STK_SIZE 512 /* 任务堆栈大小 */
TaskHandle_t Task_LED_Task_Handler; /* 任务句柄 */
void task_LED(void *pvParameters); /* 任务函数 */
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz
delay_init(); //初始化延时函数
LED_Init(); //初始化LED端口
LED_FreeRTOS();
}
void LED_FreeRTOS(void)
{
xTaskCreate((TaskFunction_t )start_task, /* 任务函数 */
(const char* )"start_task", /* 任务名称 */
(uint16_t )START_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )START_TASK_PRIO, /* 任务优先级 */
(TaskHandle_t* )&StartTask_Handler); /* 任务句柄 */
vTaskStartScheduler();
}
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); /* 进入临界区 */
xTaskCreate((TaskFunction_t )task_LED,
(const char* )"task_LED",
(uint16_t )TASK_LED_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK_LED_PRIO,
(TaskHandle_t* )&Task_LED_Task_Handler);
vTaskDelete(StartTask_Handler); /* 删除开始任务 */
taskEXIT_CRITICAL(); /* 退出临界区 */
}
void task_LED(void *pvParameters)
{
while(1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET); //LED0对应引脚PE3拉低,亮,等同于LED0(0)
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET); //LED1对应引脚PE4拉高,灭,等同于LED1(1)
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_SET); //LED2对应引脚PG9拉高,灭,等同于LED2(1)
delay_ms(1000); //延时500ms
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); //LED0对应引脚PE3拉低,灭,等同于LED0(1)
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET); //LED1对应引脚PE4拉高,亮,等同于LED1(0)
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_SET); //LED2对应引脚PG9拉高,灭,等同于LED2(1)
delay_ms(1000);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); //LED0对应引脚PE3拉低,灭,等同于LED0(1)
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET); //LED1对应引脚PE4拉高,灭,等同于LED1(1)
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_RESET); //LED2对应引脚PG9拉高,亮,等同于LED2(0)
delay_ms(1000);
}
}
|
|