WCH沁恒单片机
直播中

李明

7年用户 1331经验值
私信 关注
[问答]

CH32V307VCT6用FreeRTOS例程增加一段代码后系统无法运行了

CH32V307VCT6核心板,用官方的FreeRTOS例程,在task2_task()函数里面增加了一段代码,系统就不能正常运行了,代码如下:
void task2_task(void *pvParameters)
{
//    新增的部分(增加了这部分代码后,系统就不能正常运行了,task1和task2都不能运行了)
    tiM_TimeBaseInitTypeDef  TIM_TimeBaseStructure={0};


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);


    TIM_TimeBaseStructure.TIM_Period = 200 - 1;
    TIM_TimeBaseStructure.TIM_Prescaler = 7200 - 1;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);


    TIM_Cmd(TIM2, ENABLE);
    TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
    NVIC_SetPriority(TIM2_IRQn, 0x80);
    NVIC_EnableIRQ(TIM2_IRQn);
//  新增结束


    while(1)
    {
        printf("task2 entryrn");
        GPIO_ResetBits(GPIOB, GPIO_Pin_4);
        vTaskDelay(500);
        GPIO_SetBits(GPIOB, GPIO_Pin_4);
        vTaskDelay(500);
    }
}
请问是什么原因?
本来是想在FreeRTOS例程的基础上,把TCPServer例程的功能集成进来,可以进行多任务网络通讯。现在就卡在这里了。
  
  

回帖(3)

俞丽

2022-6-21 09:31:37
TIM2的中断函数写好没,是不是跳入中断了,没清中断一直卡在中断那里。
举报

王雪

2022-6-21 09:31:43
您好,感觉应该是你的程序问题,附件为参考例程,您可以参考一下
FreeRTOS.zip
举报

陈鲜孰

2022-6-21 09:31:46
谢谢,确实是中断函数没写的问题
举报

更多回帖

发帖
×
20
完善资料,
赚取积分