STM32CubeMX开发FreeRTOS stm32f103rbt6例程

一、STM32CubeMX工程

1、基本功能配置

注意:SYS->Timebase Source不要选成SysTick,否则FreeTROS系统始终会与HAL库时钟冲突

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第1张图片

2、时钟配置

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第2张图片

3、参数配置

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第3张图片

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第4张图片

4、输出配置

菜单栏:Project->Setting

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第5张图片

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第6张图片

5、代码生成

二、IAR代码添加编写(红黑色字体为自己添加)

void thread_HelloEmbedded(void const *argument);

void thread_HelloFreeRTOS(void const *argument);

/* USER CODE END 0 */

int main(void)

{

        HAL_Init();

        SystemClock_Config();

        MX_GPIO_Init();

       MX_USART1_UART_Init();

       osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);

        defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

  

         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

        /*线程定义   线程句柄    所调用执行函数        优先级      ???   分配栈空间 */

        osThreadDef (Embedded, thread_HelloEmbedded, osPriorityNormal, 0, 128);

        osThreadDef (HelloFreeRTOS, thread_HelloFreeRTOS, osPriorityAboveNormal, 0, 128);

       /*启动线程  */

         osThreadCreate(osThread(Embedded), NULL);

        osThreadCreate(osThread(HelloFreeRTOS), NULL);   

        osKernelStart();           /*启动内核*/

       while (1)                     /*不会执行到此*/

        {

        }

}

void thread_HelloEmbedded(void const *argument) {

    for(;;){

        /*UART发送*/

        HAL_UART_Transmit(&huart1,"Hello Embedded!\n",16,1000);

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

        osDelay(250);                                /*250ms*/

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

        osDelay(250);    

    }    

}

void thread_HelloFreeRTOS(void const *argument) {

    for(;;){       

        HAL_UART_Transmit(&huart1,"Hello FreeRTOS!\n",16,1000);

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

        osDelay(500);

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

        osDelay(500);

 

    }        

}

 

三、JLINK 下载配置

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第7张图片

 STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第8张图片

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第9张图片

四、现象结果

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第10张图片

STM32CubeMX开发FreeRTOS stm32f103rbt6例程_第11张图片

 

 

 

你可能感兴趣的:(STM32)