打印
[DemoCode下载]

新唐NuMicro_M051+小嵌操作系统AIOS例程

[复制链接]
4798|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
时飞|  楼主 | 2017-3-21 23:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开发平台Keil v5+ & IAR
例程代码如下,欢迎朋友们评估使用:

CORTEX_M0_M051_NuMicro_IAR.rar (1.15 MB)
CORTEX_M0_M051_NuMicro_KEIL.rar (1.22 MB)

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

沙发
598330983| | 2017-3-22 17:50 | 只看该作者
看来新唐在搞这个系统,不错好东西,我要认真学学。

使用特权

评论回复
板凳
稳稳の幸福| | 2017-3-22 21:01 | 只看该作者
下载看看这个系统有什么好玩的。

使用特权

评论回复
地板
734774645| | 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软件定时器.
}

使用特权

评论回复
5
iwqt1983| | 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
请问有使用说明书吗?最好有个详细讲解,大家才可以放心的去使用。

使用特权

评论回复
6
734774645| | 2017-3-23 11:41 | 只看该作者
iwqt1983 发表于 2017-3-23 10:07
这个操作系统对存储器的占用还是有太大了,最好做到1-1.5KB的RAM,FLash不要超过6KB  如何做到 官方网站上 ...

看了官方,有简明使用教程的,确实不错,好东西。

使用特权

评论回复
7
734774645| | 2017-3-23 11:41 | 只看该作者
希望多多的支持各种单片机,另外多多的教程。

使用特权

评论回复
8
iwqt1983| | 2017-3-23 11:42 | 只看该作者
如何精简少内核,希望出个精简单教程,说明使用方法。

使用特权

评论回复
9
bingkaiok| | 2017-4-27 23:12 | 只看该作者
感谢前辈分享。

使用特权

评论回复
10
ghost_z| | 2017-4-30 16:25 | 只看该作者
有没MODBUS的例程

使用特权

评论回复
11
yiyigirl2014| | 2017-4-30 23:00 | 只看该作者
新出的一块RTOS,而且非常好学。

使用特权

评论回复
12
yiyigirl2014| | 2017-4-30 23:12 | 只看该作者
什么时候Proteus支持这个仿真就给力了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

17

帖子

1

粉丝