你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在STM32F407上跑OpenHarmony鸿蒙操作系统

[复制链接]
攻城狮Melo 发布时间:2022-11-6 21:36
前言
openharmony移植示例 基于最新的master版本,目前支持的芯片有:
STM32F407

目标是移植更多的开发板更多的MCU支持OpenHarmony

经过几天的努力,终于成功把最新版本的OpenHarmony轻量系统内核移植到ARM单片机上,现在代码开源、移植文章也完成7篇,后续会考虑增加视频讲解,直播。以便大家也可以自己移植。

效果

开发板照片如下,自己在网上随便买的一块
10f26488fbdf44b986cdb4689bd27322.jpg

目前OpenHarmony内核已经跑起来了,可以实现开发板上的LED灯闪烁。
串口调试打印信息:

510d4311b5c54e5587c5a5e6d7907600.png

系统创建了两个线程,如下:

  1. <font face="Arial" size="3">
  2. //线程2,用于点灯和打印
  3. VOID TaskSampleEntry2(VOID)
  4. {
  5.         printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
  6.         led_init();
  7.     while (1) {
  8.         printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
  9.                
  10.                 led_on(0);
  11.                 led_on(1);
  12.                 led_on(2);
  13.                 led_on(3);
  14.         LOS_TaskDelay(1000);
  15.                
  16.                 led_off(0);
  17.                 led_off(1);
  18.                 led_off(2);
  19.                 led_off(3);
  20.                 LOS_TaskDelay(1000);
  21.     }
  22. }

  23. //线程1,用于打印
  24. VOID TaskSampleEntry1(VOID)
  25. {
  26.         printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
  27.     while (1) {
  28.         printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
  29.         LOS_TaskDelay(1000);
  30.     }
  31. }

  32. //创建线程
  33. VOID TaskSample(VOID)
  34. {
  35.     UINT32 uwRet;
  36.     UINT32 taskID1;
  37.     UINT32 taskID2;
  38.         UINT32 taskID3;
  39.     TSK_INIT_PARAM_S stTask = {0};

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

  48.     stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry2;
  49.     stTask.uwStackSize = 0x1000;
  50.     stTask.pcName = "TaskSampleEntry2";
  51.     stTask.usTaskPrio = 7; /* Os task priority is 7 */
  52.     uwRet = LOS_TaskCreate(&taskID2, &stTask);
  53.     if (uwRet != LOS_OK) {
  54.         printf("Task2 create failed\r\n");
  55.     }
  56.         
  57. }</font>
复制代码

代码开源
本次移植所有代码都将会开源给大家,同时也会持续做适配,后面会适配网卡、LCD、触摸屏等驱动。
————————————————
版权声明:连志安的博客


收藏 评论1 发布时间:2022-11-6 21:36

举报

1个回答
STMWoodData 回答时间:2022-11-7 18:06:19
学习学习
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版