本帖最后由 yzm96_251376799 于 2022-11-25 23:18 编辑

受疫情影响,我收到板子已经接近评测尾声。先到官网下载资料,然后根据资料进行间的的硬件平台的搭建。
首先说核心板确实做工不错,io都引了出来,方便灵活应用
然后说一下希望改进的地方:1、应该有一个电源指示灯,一个运行指示灯。黑乎乎的板子,信号也是一抹黑
                                             2、插针有IO口,有GND。但是没有可以引出的+3.3V。有几个3.3V的跳针,但是要接跳线器,引出不易。
                                            3、原理图和板子有不匹配的地方(可能我没有找到正确的原理图)
182337o6pmzq0mzmlz8qq8.png
下面说一下使用。可以直接再demo上修改。也可以用线程编辑工具生成项目。线程编辑工具简单易用,但是稍微有些简陋,希望能够配置的地方更多一些。
182654tlp2plnnivvy2i3z.png
生成三个线程,驱动三个全彩的LED。LED由三极管驱动,,控制基极,同时拉低LED的R\G\B三个引脚可以亮红绿蓝三色
线程1,LED1闪烁
线程2,LED2闪烁
线程3,LED3闪烁
线程4,轮流使能红绿蓝颜色

void thread0_main(void)
{
    //while(1){
    //    //user code section
    //    //GPIO_EXAMPLE(GPIOA_BASE_ADDR);
    //}
    //thread_end();
    //使能了GPIOA的时钟
    INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    //将PA0设置为输出模式
    GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN0),GPIO_SET_ENABLE);
    //配置默认输出为高电平
    GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN0);

    while(1)
    {
        //引脚反转
        GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN0);
        for (u32 i = 0; i < 200; i++)
        {
            for (u32 j = 0; j < 2000; j++)
            {
                NOP();
            }
        }
    }
    thread_end();
}

////////////////////////////////////////////////////////////

void thread1_main(void)
{
//    while(1){
//        //user code section
//        //GPCOM_UART_EXAMPLE(GPCOM8_BASE_ADDR);
//    }
//    thread_end();
    INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    //将PA1设置为输出模式
    GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN1),GPIO_SET_ENABLE);
    //配置默认输出为高电平
    GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN1);
    while(1)
    {
        //引脚反转
        GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN1);
        for (u32 i = 0; i < 400; i++)
        {
            for (u32 j = 0; j < 4000; j++)
            {
                NOP();
            }
        }
    }
    thread_end();
}

////////////////////////////////////////////////////////////

void thread2_main(void)
{
//    while(1){
//        //GPCOM_SPI_EXAMPLE(GPCOM9_BASE_ADDR);
//        //user code section
//    }
    INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    //将PA3设置为输出模式
    GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN3),GPIO_SET_ENABLE);
    //配置默认输出为高电平
    GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN3);
    while(1)
    {
        //引脚反转
        GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN3);
        for (u32 i = 0; i < 600; i++)
        {
            for (u32 j = 0; j < 6000; j++)
            {
                NOP();
            }
        }
    }
    thread_end();
}

////////////////////////////////////////////////////////////

void thread3_main(void)
{
//    while(1){
//        //TIMER_COMPARER_EXAMPLE(TIMER2_BASE_ADDR);
//        //user code section
//    }


    //使能了GPIOC的时钟
    INTDEV_SET_CLK_RST(GPIOC_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    //将PC0/2/4设置为输出模式
    GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN0),GPIO_SET_ENABLE);
    GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN2),GPIO_SET_ENABLE);
    GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN4),GPIO_SET_ENABLE);
    while(1)
    {
        GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN0);
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN2);
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN4);
        for (u32 i = 0; i < 200; i++)
        {
            for (u32 j = 0; j < 2000; j++)
            {
                NOP();
            }
        }
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN0);
        GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN2);
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN4);
        for (u32 i = 0; i < 200; i++)
        {
            for (u32 j = 0; j < 2000; j++)
            {
                NOP();
            }
        }
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN0);
        GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN2);
        GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN4);
        for (u32 i = 0; i < 200; i++)
        {
            for (u32 j = 0; j < 2000; j++)
            {
                NOP();
            }
        }
    }
    thread_end();
}

在编辑编译里bulid all生成hex文件
启动开发板程序下载软件
image.png
单词运行,程序运行,hex并不烧写进MCU,掉电后此程序清除
烧录固件后,程序烧进MCU。掉电重新上电程序运行