[DemoCode下载] [NANO103][FreeRTOS]NANO103_FreeRTOS

[复制链接]
1638|11
 楼主| YWBIN 发表于 2018-3-21 15:10 | 显示全部楼层 |阅读模式
附件程序为在新唐NANO103上运行FreeRTOS的Demo,有需要的朋友可以参考下。

[NANO103][FreeRTOS]NANO103_FreeRTOS.rar

4.34 MB, 下载次数: 94

天灵灵地灵灵 发表于 2018-3-21 16:45 | 显示全部楼层
下载学习一下,也不介绍这个例子跑的是什么。
天灵灵地灵灵 发表于 2018-3-21 16:47 | 显示全部楼层
  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. * $Revision: 2 $
  5. * $Date: 15/12/11 3:38p $
  6. * [url=home.php?mod=space&uid=247401]@brief[/url]    Show hard fault information when hard fault happened.
  7. *
  8. * @note
  9. * Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved.
  10. *****************************************************************************/

  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14. #include <stdint.h>
  15. #include "Nano103.h"


  16. /* Kernel includes. */
  17. #include "FreeRTOS.h"
  18. #include "task.h"
  19. #include "timers.h"
  20. #include "semphr.h"


  21. void SYS_Init(void)
  22. {
  23.     /*---------------------------------------------------------------------------------------------------------*/
  24.     /* Init System Clock                                                                                       */
  25.     /*---------------------------------------------------------------------------------------------------------*/
  26.     /* Unlock protected registers */
  27.     SYS_UnlockReg();

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

  31.     /* Waiting for 12MHz clock ready */
  32.     CLK_WaitClockReady( CLK_STATUS_HXTSTB_Msk);

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

  35.     /* Enable IP clock */
  36.     CLK->APBCLK |= CLK_APBCLK_UART0_EN; // UART0 Clock Enable

  37.     /* Select IP clock source */
  38.     CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART0SEL_Msk;
  39.     CLK->CLKSEL1 |= (0x0 << CLK_CLKSEL1_UART0SEL_Pos);// Clock source from external 12 MHz crystal clock

  40.     /* Update System Core Clock */
  41.     /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
  42.     SystemCoreClockUpdate();

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

  49.     /* Lock protected registers */
  50.     SYS_LockReg();
  51. }


  52. void UART0_Init()
  53. {
  54.     /*---------------------------------------------------------------------------------------------------------*/
  55.     /* Init UART                                                                                               */
  56.     /*---------------------------------------------------------------------------------------------------------*/
  57.     UART_Open(UART0, 115200);
  58. }


  59. void prvSetupHardware(void)
  60. {
  61.     SYS_Init();
  62.     UART0_Init();
  63. }


  64. void Task0(void *pvParameters)
  65. {
  66.     printf("Task0 running ...\n");

  67.     for(;;)
  68.     {   
  69.         printf("Task0\n");
  70.         vTaskDelay(100);
  71.     }
  72. }


  73. void Task1(void *pvParameters)
  74. {
  75.     printf("Task1 running ...\n");

  76.     for(;;)
  77.     {   
  78.         printf("Task1\n");
  79.         vTaskDelay(100);
  80.     }
  81. }


  82. int main(void)
  83. {
  84.     prvSetupHardware();

  85.     xTaskCreate(Task0, (const char *)"Task0", 100, NULL, 1, NULL);
  86.     xTaskCreate(Task1, (const char *)"Task1", 100, NULL, 2, NULL);
  87.     vTaskStartScheduler();

  88.     while(1);
  89. }




天灵灵地灵灵 发表于 2018-3-21 16:47 | 显示全部楼层
我给大家补上,貌似很容易移植
玛尼玛尼哄 发表于 2018-3-21 17:34 | 显示全部楼层
好像新唐的所有单片机都支持这个系统。
heisexingqisi 发表于 2018-3-21 18:16 | 显示全部楼层
系统的初始化跟裸奔的差不多啊。
xuanhuanzi 发表于 2018-3-22 09:09 | 显示全部楼层
貌似所有的RTOS好像都是这么创建任务的。
734774645 发表于 2018-3-22 22:27 | 显示全部楼层
学会一种,大部分就都容易入门了。
xinpian101 发表于 2018-3-24 18:28 | 显示全部楼层
想学这个是不是还要去下载freertos官网的教程或者说明。
xuanhuanzi 发表于 2018-3-25 09:15 | 显示全部楼层
M051能用这个不
dongnanxibei 发表于 2018-3-25 16:02 | 显示全部楼层
这个系统里可以调用官方提供的那些库函数吗
零壹_电子 发表于 2018-8-17 14:51 | 显示全部楼层
阿里嘎多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

46

帖子

1

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