[DemoCode下载] NANO103的FreeRTOS示例

[复制链接]
1097|1
 楼主| 玛尼玛尼哄 发表于 2024-11-22 19:08 | 显示全部楼层 |阅读模式
EC_NANO103_FreeRTOS_V1.00.zip (2.66 MB, 下载次数: 0)
NANO103的FreeRTOS示例
  1. /******************************************************************************
  2. * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
  3. * [url=home.php?mod=space&uid=895143]@version[/url]  V1.00
  4. * [url=home.php?mod=space&uid=247401]@brief[/url]    FreeRTOS demo.
  5. *
  6. * [url=home.php?mod=space&uid=17282]@CopyRight[/url] (C) 2019 Nuvoton Technology Corp. All rights reserved.
  7. *****************************************************************************/

  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <stdint.h>
  12. #include "Nano103.h"

  13. /* Kernel includes. */
  14. #include "FreeRTOS.h"
  15. #include "task.h"
  16. #include "timers.h"
  17. #include "semphr.h"

  18. void SYS_Init(void)
  19. {
  20.     /*---------------------------------------------------------------------------------------------------------*/
  21.     /* Init System Clock                                                                                       */
  22.     /*---------------------------------------------------------------------------------------------------------*/
  23.     /* Unlock protected registers */
  24.     SYS_UnlockReg();

  25.     /* Enable External XTAL (4~24 MHz) */
  26.     //CLK->PWRCTL &= ~CLK_PWRCTL_HXT_EN_Msk;
  27.     CLK->PWRCTL |= CLK_PWRCTL_HXTEN_Msk; /* HXT Enabled */

  28.     /* Waiting for 12MHz clock ready */
  29.     CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

  30.     /* Switch HCLK clock source to XTAL */
  31.     CLK->CLKSEL0 = (CLK->CLKSEL0 & ~ CLK_CLKSEL0_HCLKSEL_Msk) | (CLK_CLKSEL0_HCLKSEL_HXT);

  32.     /* Enable IP clock */
  33.     CLK_EnableModuleClock(UART0_MODULE);  /* UART0 Clock Enable */

  34.     /* Select IP clock source */
  35.     /* Clock source from external 12 MHz crystal clock */
  36.     CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_UART0_CLK_DIVIDER(1));

  37.     /* Update System Core Clock */
  38.     /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
  39.     SystemCoreClockUpdate();

  40.     /*---------------------------------------------------------------------------------------------------------*/
  41.     /* Init I/O Multi-function                                                                                 */
  42.     /*---------------------------------------------------------------------------------------------------------*/
  43.     /* Set PB multi-function pins for UART0 RXD and TXD  */
  44.     SYS->GPB_MFPL &= ~(SYS_GPB_MFPL_PB0MFP_Msk | SYS_GPB_MFPL_PB1MFP_Msk);
  45.     SYS->GPB_MFPL |= (SYS_GPB_MFPL_PB0MFP_UART0_RXD | SYS_GPB_MFPL_PB1MFP_UART0_TXD);

  46.     /* Lock protected registers */
  47.     SYS_LockReg();
  48. }


  49. void UART0_Init()
  50. {
  51.     /*---------------------------------------------------------------------------------------------------------*/
  52.     /* Init UART                                                                                               */
  53.     /*---------------------------------------------------------------------------------------------------------*/
  54.     UART_Open(UART0, 115200);
  55. }


  56. void prvSetupHardware(void)
  57. {
  58.     SYS_Init();
  59.     UART0_Init();
  60. }


  61. void Task0(void *pvParameters)
  62. {
  63.     printf("Task0 running ...\n");

  64.     for (;;)
  65.     {
  66.         printf("Task0\n");
  67.         vTaskDelay(100);
  68.     }
  69. }


  70. void Task1(void *pvParameters)
  71. {
  72.     printf("Task1 running ...\n");

  73.     for (;;)
  74.     {
  75.         printf("Task1\n");
  76.         vTaskDelay(100);
  77.     }
  78. }


  79. int main(void)
  80. {
  81.     prvSetupHardware();

  82.     xTaskCreate(Task0, (const char *)"Task0", 100, NULL, 1, NULL);
  83.     xTaskCreate(Task1, (const char *)"Task1", 100, NULL, 2, NULL);
  84.     vTaskStartScheduler();

  85.     while (1);
  86. }






 楼主| 玛尼玛尼哄 发表于 2024-11-22 19:08 | 显示全部楼层
你 用过RTOS吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3261

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部