Ejecutando el sistema operativo OpenHarmony Hongmeng en STM32F407

Prefacio

El ejemplo de trasplante de Openharmony se basa en la última versión maestra. Los chips actualmente compatibles son:

STM32F407

GD32F303

GD32F450

El objetivo es portar más placas de desarrollo y más MCU para admitir OpenHarmony.

Después de varios días de arduo trabajo, finalmente trasplantamos con éxito la última versión del kernel del sistema liviano OpenHarmony al microcontrolador ARM. Ahora el código es de código abierto y se han completado 7 artículos de trasplante. Consideraremos agregar explicaciones en video y transmisiones en vivo en el futuro. Para que todos puedan trasplantarse.

Efecto

La foto de la placa de desarrollo es la siguiente. Compré una al azar en línea.
Insertar descripción de la imagen aquí
El kernel OpenHarmony ahora se está ejecutando y las luces LED en la placa de desarrollo pueden parpadear.
Información de impresión de depuración del puerto serie:
Insertar descripción de la imagen aquí
el sistema creó dos subprocesos, de la siguiente manera:


//线程2,用于点灯和打印
VOID TaskSampleEntry2(VOID)
{
    
    
	printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
	led_init();
    while (1) {
    
    
        printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
		
		led_on(0);
		led_on(1);
		led_on(2);
		led_on(3);
        LOS_TaskDelay(1000);
		
		led_off(0);
		led_off(1);
		led_off(2);
		led_off(3);
		LOS_TaskDelay(1000);
    }
}

//线程1,用于打印
VOID TaskSampleEntry1(VOID)
{
    
    
	printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
    while (1) {
    
    
        printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
        LOS_TaskDelay(1000);
    }
}

//创建线程
VOID TaskSample(VOID)
{
    
    
    UINT32 uwRet;
    UINT32 taskID1;
    UINT32 taskID2;
	UINT32 taskID3;
    TSK_INIT_PARAM_S stTask = {
    
    0};

    stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry1;
    stTask.uwStackSize = 0x1000;
    stTask.pcName = "TaskSampleEntry1";
    stTask.usTaskPrio = 6; /* Os task priority is 6 */
    uwRet = LOS_TaskCreate(&taskID1, &stTask);
    if (uwRet != LOS_OK) {
    
    
        printf("Task1 create failed\r\n");
    }

    stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry2;
    stTask.uwStackSize = 0x1000;
    stTask.pcName = "TaskSampleEntry2";
    stTask.usTaskPrio = 7; /* Os task priority is 7 */
    uwRet = LOS_TaskCreate(&taskID2, &stTask);
    if (uwRet != LOS_OK) {
    
    
        printf("Task2 create failed\r\n");
    }
	
}

Código fuente abierto

Todos los códigos para este trasplante serán de código abierto para todos y la adaptación continuará, más adelante se adaptarán la tarjeta de red, la pantalla LCD, la pantalla táctil y otros controladores.
Al mismo tiempo, se organizará una retransmisión en directo para enseñar a todos cómo trasplantar y utilizar

Almacén de código abierto:
https://gitee.com/qidiyun/openharmony-bsp-example/tree/master

Supongo que te gusta

Origin blog.csdn.net/aa120515692/article/details/123337195
Recomendado
Clasificación