啃小安派代码-2-小安派hello world!

[复制链接]
查看560 | 回复2 | 2023-11-20 11:35:49 | 显示全部楼层 |阅读模式
工程目录:AiPi-Open-Kits[color=rgba(0, 0, 0, 0.4)][size=0.9em]/
Project_basic
文件目录:AiPi-Open-Kits[color=rgba(0, 0, 0, 0.4)][size=0.9em]/
Project_basic [color=rgba(0, 0, 0, 0.4)][size=0.9em]/
main




main 工程代码:
--------------------------------------------------
/**
* @file main.c
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2023-08-22
*
* @copyright Copyright (c) 2023
*
*/

#include <stdio.h>    //导入各种头文件
#include <stdlib.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include "board.h"     //aithinker_Ai-M6X_SDK/ bsp / board / bl616dk / board.h
#include "log.h"
//#include<>和#include“”的区别


//1、#include<>:编译器直接从系统类库目录里查找头文件
//如果类库目录下查找失败,编译器会终止查找,直接报错:No such file or directory.

//2、#include"":默认从项目当前目录查找头文件,所谓项目当前目录,就是项目工程文件(*.vcxproj)所在的目录
//如果在项目当前目录下查找失败,再从项目配置的头文件引用目录查找头文件,所谓项目配置的引用目录,
//就是我们在项目工程中设置的头文件引用目录,Windows VS编译环境如下图所示。在Linux GCC编译环境下,
//则一般通过在Makefile文件中使用-L参数指定引用目录。

//1、#include<>一般用于包含系统头文件,诸如stdlib.h、stdio.h、iostream等;
//2、#include""一般用于包含自定义头文件,比如我们自定义的test.h、declare.h等。


#define DBG_TAG "MAIN"  // 宏定义,将“MAIN"  定义为 DBG_TAG,


int main(void)  // 定义 int 型(整形),函数main,函数参数为空,函数无参数
{
    board_init();  //  初始化开发板
    LOG_I("Hello world");  // 日志输出 hello world
}
-------------------------------------------------------
程序文件夹在VScode中可以通过F12 转到函数定义位置,产看函数具体代码内容。
void board_init(void)
{
    int ret = -1;
    uintptr_t flag;
    size_t heap_len;

    flag = bflb_irq_save();

    ret = bflb_flash_init();

    system_clock_init();
    peripheral_clock_init();
    bflb_irq_initialize();

    console_init();

#ifdef CONFIG_PSRAM
    board_psram_x8_init();
    Tzc_Sec_PSRAMB_Access_Release();

    heap_len = ((size_t)&__psram_limit - (size_t)&__psram_heap_base);
    pmem_init((void *)&__psram_heap_base, heap_len);
#endif

    heap_len = ((size_t)&__HeapLimit - (size_t)&__HeapBase);
    kmem_init((void *)&__HeapBase, heap_len);

    bl_show_log();
    if (ret != 0) {
        printf("flash init fail!!!\r\n");
    }
    bl_show_flashinfo();
#ifdef CONFIG_PSRAM
    printf("dynamic memory init success, ocram heap size = %d Kbyte, psram heap size = %d Kbyte\r\n",
           ((size_t)&__HeapLimit - (size_t)&__HeapBase) / 1024,
           ((size_t)&__psram_limit - (size_t)&__psram_heap_base) / 1024);
#else
    printf("dynamic memory init success, ocram heap size = %d Kbyte \r\n", ((size_t)&__HeapLimit - (size_t)&__HeapBase) / 1024);
#endif

    printf("sig1:%08x\r\n", BL_RD_REG(GLB_BASE, GLB_UART_CFG1));
    printf("sig2:%08x\r\n", BL_RD_REG(GLB_BASE, GLB_UART_CFG2));
    printf("cgen1:%08x\r\n", getreg32(BFLB_GLB_CGEN1_BASE));

    log_start();

#if (defined(CONFIG_LUA) || defined(CONFIG_BFLOG) || defined(CONFIG_FATFS))
    rtc = bflb_device_get_by_name("rtc");
#endif

    bflb_irq_restore(flag);
}



一个hello world 都需要用FreeRTOS,杀鸡用牛刀!
提示:要想学会用代码编程使用小安派,大家需要先对FreeRTOS有个入门才行!


回复

使用道具 举报

干簧管 | 2023-11-24 20:45:45 | 显示全部楼层
回复

使用道具 举报

san | 2023-11-24 21:02:18 | 显示全部楼层
打卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则