本帖最后由 ownbest 于 2018-7-18 10:13 编辑
使用的单片机是STM32F103RCT6,在FALSH里面做了两个程序,一个是Bootloader,负责程序跳转,一个是APP主程序,使用了FreeRTOS系统,跳转之后主程序初始化可以执行,一旦执行到调用 vTaskStartScheduler();这个函数后就死机,屏蔽 vTaskStartScheduler();之后,其他没有修改,在主while(1)里调用函数可以正常执行,主程序从0x8000000单独执行是正常的,,,请大神指点
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
CAN_Normal_Init(1,1,6,16,0);
MX_ADC1_Init();
MX_SPI1_Init();
MX_UART4_Init();//DEBUG
// MX_IWDG_Init();
MX_USART1_UART_Init();//AC
MX_RTC_Init();
MX_USART2_UART_Init();//3G
GPRS_RevData.maxlen = UART_DMA_RX_MAX;//初始化接收空间
GPRS_RevData.curbuf = (uint8_t*)pvPortMalloc(sizeof(uint8_t)*GPRS_RevData.maxlen);
HAL_UART_Receive_DMA(&huart2,GPRS_RevData.curbuf,UART_DMA_RX_MAX);
DBG_Print("进入主程序
");
osThreadDef(DcuCheckTask, StartDcuCheckTask, osPriorityHigh, 0, 256);
DcuCheckTaskHandle = osThreadCreate(osThread(DcuCheckTask), NULL);
/* Start scheduler */
osKernelStart();
while (1)
{
delay_ms(200);
//HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
StartDcuCheckTask((void const *)1);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
任务没错,单独执行主程序是没有问题的
试了在主程序while(1)里调用其中一个任务函数是正常的
一周热门 更多>