1. 首页
  2. 论坛
  3. 外包
  4. 下载
  5. Datasheet
  6. 公开课
  7. 更多

查看: 2502|回复: 11
打印 上一主题 下一主题
收起左侧

[DemoCode下载] 新唐NuMicro_M051+小嵌操作系统AIOS例程

[复制链接]   未结帖(20)
7主题17帖子51积分
初级技术员
  1. 关注TA
  2. 发消息
专家等级:结帖率:0%
跳转到指定楼层
楼主
 楼主| 发表于 2017-3-21 23:35 | 只看该作者 |返回版面回帖奖励 |倒序浏览 |阅读模式
开发平台Keil v5+ & IAR
例程代码如下,欢迎朋友们评估使用:




后期若有调整,会在小嵌操作系统官方网站(aios.io)更新;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册
x
21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
85主题3517帖子1万积分
资深工程师
  1. 关注TA
  2. 发消息
专家等级:结帖率:75%打赏:0.00受赏:2.00
沙发
发表于 2017-3-22 17:50 | 只看该作者 |返回版面
看来新唐在搞这个系统,不错好东西,我要认真学学。
21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     
60主题1791帖子5401积分
高级工程师
  1. 关注TA
  2. 发消息
专家等级:结帖率:100%打赏:0.00受赏:25.00
板凳
发表于 2017-3-22 21:01 | 只看该作者 |返回版面
下载看看这个系统有什么好玩的。
21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
66主题1803帖子5418积分
高级工程师
  1. 关注TA
  2. 发消息
专家等级:结帖率:100%打赏:0.00受赏:5.00
地板
发表于 2017-3-22 21:41 | 只看该作者 |返回版面
  • /**********************************************************************************************************
  • AIOS(Advanced Input Output System) - An Embedded Real Time Operating System (RTOS)
  • Copyright (C) 2012~2017 SenseRate.Com All rights reserved.
  • http://www.aios.io -- Documentation, latest information, license and contact details.
  • http://www.SenseRate.com -- Commercial support, development, porting, licensing and training services.
  • --------------------------------------------------------------------------------------------------------
  • Redistribution and use in source and binary forms, with or without modification,
  • are permitted provided that the following conditions are met:
  • 1. Redistributions of source code must retain the above copyright notice, this list of
  • conditions and the following disclaimer.
  • 2. Redistributions in binary form must reproduce the above copyright notice, this list
  • of conditions and the following disclaimer in the documentation and/or other materials
  • provided with the distribution.
  • 3. Neither the name of the copyright holder nor the names of its contributors may be used
  • to endorse or promote products derived from this software without specific prior written
  • permission.
  • --------------------------------------------------------------------------------------------------------
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  • "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  • THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  • PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  • CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  • EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  • PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  • OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  • WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  • OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  • ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • --------------------------------------------------------------------------------------------------------
  • Notice of Export Control Law
  • --------------------------------------------------------------------------------------------------------
  • SenseRate AIOS may be subject to applicable export control laws and regulations, which might
  • include those applicable to SenseRate AIOS of U.S. and the country in which you are located.
  • Import, export and usage of SenseRate AIOS in any manner by you shall be in compliance with such
  • applicable export control laws and regulations.
  • ***********************************************************************************************************/

  • #include <stdio.h>
  • #include "M051Series.h"
  • //AIOS
  • #include "AIOS.h"

  • #define PLLCON_SETTING  CLK_PLLCON_50MHz_HXT
  • #define PLL_CLOCK       50000000

  • OSTimerHandle_t                        Timer500msHandle        = NULL;
  • OSTaskHandle_t                         CtrlTaskHandle                = NULL;
  • OSTaskHandle_t                         LedTaskHandle                = NULL;
  • OSSemHandle_t                         LedSemHandle                = NULL;

  • void CtrlTask( void *pvParameters );
  • void LedTask( void *pvParameters );
  • void Timer500ms( void *pvParameters );


  • void SYS_Init(void)
  • {
  •         /*---------------------------------------------------------------------------------------------------------*/
  •         /* Init System Clock                                                                                       */
  •         /*---------------------------------------------------------------------------------------------------------*/

  •         /* Enable Internal RC 22.1184MHz clock */
  •         CLK->PWRCON |= CLK_PWRCON_OSC22M_EN_Msk;

  •         /* Waiting for Internal RC clock ready */
  •         while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_OSC22M_STB_Msk));

  •         /* Switch HCLK clock source to Internal RC and and HCLK source divide 1 */
  •         CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk;
  •         CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HIRC;
  •         CLK->CLKDIV &= ~CLK_CLKDIV_HCLK_N_Msk;
  •         CLK->CLKDIV |= CLK_CLKDIV_HCLK(1);

  •         /* Enable external XTAL 12MHz clock */
  •         CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk;

  •         /* Waiting for external XTAL clock ready */
  •         while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk));

  •         /* Set core clock as PLL_CLOCK from PLL */
  •         CLK->PLLCON = PLLCON_SETTING;
  •         while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk));
  •         CLK->CLKSEL0 &= (~CLK_CLKSEL0_HCLK_S_Msk);
  •         CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_PLL;

  •         /* Update System Core Clock */
  •         /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
  •         //SystemCoreClockUpdate();
  •         PllClock        = PLL_CLOCK;            // PLL
  •         SystemCoreClock = PLL_CLOCK / 1;        // HCLK
  •         CyclesPerUs     = PLL_CLOCK / 1000000;  // For SYS_SysTickDelay()

  •         /* Enable UART module clock */
  •         CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk;

  •         /* Select UART module clock source */
  •         CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
  •         CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_HXT;

  •         /*---------------------------------------------------------------------------------------------------------*/
  •         /* Init I/O Multi-function                                                                                 */
  •         /*---------------------------------------------------------------------------------------------------------*/

  •         /* Set P3 multi-function pins for UART0 RXD , TXD and CKO */
  •         SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
  •         SYS->P3_MFP |= (SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0);
  • }

  • void UART0_Init()
  • {
  •         /*---------------------------------------------------------------------------------------------------------*/
  •         /* Init UART                                                                                               */
  •         /*---------------------------------------------------------------------------------------------------------*/
  •         /* Reset UART0 */
  •         SYS->IPRSTC2 |=  SYS_IPRSTC2_UART0_RST_Msk;
  •         SYS->IPRSTC2 &= ~SYS_IPRSTC2_UART0_RST_Msk;

  •         /* Configure UART0 and set UART0 Baudrate */
  •         UART0->BAUD = UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HXT, 115200);
  •         UART0->LCR = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1;
  • }

  • static void SetupHardware(void)
  • {
  •         /* Unlock protected registers */
  •         SYS_UnlockReg();

  •         /* Init System, peripheral clock and multi-function I/O */
  •         SYS_Init();

  •         /* Lock protected registers */
  •         SYS_LockReg();

  •         /* Init UART0 for printf */
  •         UART0_Init();

  •         printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);

  •         /*
  •                 This sample code will blinking LED on NuTiny EVB board of M058SSAN.
  •                 The I/O for LED is P2.3 or P3.6
  •         */

  •         printf("+---------------------------------------+\n");
  •         printf("|    NuTiny EVB LED Sample Code         |\n");
  •         printf("+---------------------------------------+\n");

  •         /* Init P2.3 and P3.6 to be output mode */
  •         P2->PMD = (P2->PMD & ~(0x3 << 2*3)) | (1 << 2*3);
  •         P3->PMD = (P3->PMD & ~(0x3 << 2*6)) | (1 << 2*6);  
  • }

  • /*---------------------------------------------------------------------------------------------------------*/
  • /*  Main Function                                                                                          */
  • /*---------------------------------------------------------------------------------------------------------*/
  • int32_t main(void)
  • {
  •         SetupHardware();

  •         //创建500ms的定时器,分配定时器服务函数为Timer500ms
  •         Timer500msHandle = OSTimerCreate(OSM2T(500), OS_TRUE, Timer500ms, NULL, "T500ms");
  •         //创建信号量
  •         LedSemHandle        = OSSemCreate(0);
  •         //创建任务,控制LED灯
  •         CtrlTaskHandle        = OSTaskCreate(CtrlTask, NULL, OSMINIMAL_STACK_SIZE, OSLOWEAST_PRIORITY+1, "Ctrl" );
  •         LedTaskHandle        = OSTaskCreate(LedTask, NULL, OSMINIMAL_STACK_SIZE, OSLOWEAST_PRIORITY+1, "Led" );

  •         OSTimerStart(Timer500msHandle);

  •         // Start the scheduler.
  •         OSStart();
  •                
  •         //if everything is ok, can't reach here
  •         for( ;; );  
  • }

  • void CtrlTask( void *pvParameters )
  • {
  •         for( ;; )
  •         {
  •                 OSSemPost(LedSemHandle);       

  •                 OSTaskSleep( OSM2T(500) );        
  •         }
  • }

  • void LedTask( void *pvParameters )
  • {
  •         for( ;; )
  •         {
  •                 OSSemPend(LedSemHandle, OSPEND_FOREVER_VALUE);       
  •                 /* Toggle P2.3 */
  •                 P23 ^= 1;

  •                 /* Toggle P3.6 */
  •                 P36 ^= 1;               
  •         }
  • }

  • void Timer500ms( void *pvParameters )
  • {
  •         // 500ms软件定时器.
  • }
  • 复制代码
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
         
    18主题253帖子822积分
    高级技术员
    1. 关注TA
    2. 发消息
    专家等级:结帖率:0%
    5
    发表于 2017-3-23 10:07 | 只看该作者 |返回版面
    本帖最后由 iwqt1983 于 2017-3-23 10:28 编辑

    这个操作系统对存储器的占用还是有太大了,最好做到1-1.5KB的RAM,FLash不要超过6KB  如何做到 官方网站上宣传的“系统占用资源少,最小内核ROM 2K字节,RAM 几百个字节。http://www.senserate.com/dynamic/AIOS-v1.0.0-1.html
    请问有使用说明书吗?最好有个详细讲解,大家才可以放心的去使用。
    共同发展,共同富裕。
    66主题1803帖子5418积分
    高级工程师
    1. 关注TA
    2. 发消息
    专家等级:结帖率:100%打赏:0.00受赏:5.00
    6
    发表于 2017-3-23 11:41 | 只看该作者 |返回版面
    iwqt1983 发表于 2017-3-23 10:07
    这个操作系统对存储器的占用还是有太大了,最好做到1-1.5KB的RAM,FLash不要超过6KB  如何做到 官方网站上 ...

    看了官方,有简明使用教程的,确实不错,好东西。
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
    66主题1803帖子5418积分
    高级工程师
    1. 关注TA
    2. 发消息
    专家等级:结帖率:100%打赏:0.00受赏:5.00
    7
    发表于 2017-3-23 11:41 | 只看该作者 |返回版面
    希望多多的支持各种亿万先生,另外多多的教程。
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
         
    18主题253帖子822积分
    高级技术员
    1. 关注TA
    2. 发消息
    专家等级:结帖率:0%
    8
    发表于 2017-3-23 11:42 | 只看该作者 |返回版面
    如何精简少内核,希望出个精简单教程,说明使用方法。
    共同发展,共同富裕。
    4主题63帖子189积分
    中级技术员
    1. 关注TA
    2. 发消息
    专家等级:结帖率:100%打赏:0.00受赏:2.00
    9
    发表于 2017-4-27 23:12 | 只看该作者 |返回版面
    感谢前辈分享。
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
    2主题89帖子291积分
    中级技术员
    1. 关注TA
    2. 发消息
    专家等级:结帖率:0%
    10
    发表于 2017-4-30 16:25 | 只看该作者 |返回版面
    有没MODBUS的例程
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
    83主题1688帖子5079积分
    高级工程师
    1. 关注TA
    2. 发消息
    专家等级:结帖率:100%打赏:0.00受赏:5.00
    11
    发表于 2017-4-30 23:00 | 只看该作者 |返回版面
    新出的一块RTOS,而且非常好学。
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
    83主题1688帖子5079积分
    高级工程师
    1. 关注TA
    2. 发消息
    专家等级:结帖率:100%打赏:0.00受赏:5.00
    12
    发表于 2017-4-30 23:12 | 只看该作者 |返回版面
    什么时候Proteus支持这个仿真就给力了。
    21ic公开课,21ic网友共同的学习圈子!学亿万先生、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
    您需要登录后才可以回帖 登录 | 注册
    本版积分规则
    分享 快速回复 返回顶部 返回列表
    亿万先生手机版