硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2205|回复: 9
收起左侧

[μCOS-III] stm32f429 dicovery kit为啥移植ucos-iii后用不了官方的的lcd库啊

[复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2020-5-7 19:05:28 | 显示全部楼层 |阅读模式
新人小白一个,板子是stm32f429 dicovery kit。 移植了ucos-iii后没有用ucos的库对cpu进行任何设置,就只用os_cpu_systickhandler替换了systick_handler,然后uart和led的任务都没问题,就是用到lcd的时候一直成功不了,换回st本身自带的systick_handler就好了。

官方库的驱动是ili9341,是因为库里面哪里用到了hal的tick吗? 但是我注释掉了几个hal_delay程序也没啥问题啊,是没有找对地方吗?

回复

使用道具 举报

19

主题

372

回帖

429

积分

高级会员

积分
429
发表于 2020-5-7 22:49:14 | 显示全部楼层
用不了是指编译不成功,还是LCD无显示,还是显示不正常??。。。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2020-5-9 13:27:26 | 显示全部楼层
h_007 发表于 2020-5-7 22:49
用不了是指编译不成功,还是LCD无显示,还是显示不正常??。。。

LCD不显示,还是因为库里用到的hal_delay, 在ucos下我comment掉了他,或者重写了下他就好了,谢谢你的回复xd
回复

使用道具 举报

19

主题

372

回帖

429

积分

高级会员

积分
429
发表于 2020-5-9 20:30:33 | 显示全部楼层
可以参考我的贴子,可能对你的问题有帮助
http://www.armbbs.cn/forum.php?m ... ypeid%26typeid%3D27
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2020-5-11 20:49:56 | 显示全部楼层
h_007 发表于 2020-5-9 20:30
可以参考我的贴子,可能对你的问题有帮助
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96617&extr ...

请问你知道为什么任务优先级之间的差距不一样也会影响程序表现,我有两个任务led1和2,然后他们的优先级是2和3,他们本来都是间隔一秒闪烁,然后我去掉2里面的delay,程序表现是两个led都是常亮,但是当我提高2的优先级到12的时候,就变成了2是常亮。1还是在间隔一秒闪烁
回复

使用道具 举报

19

主题

372

回帖

429

积分

高级会员

积分
429
发表于 2020-5-11 21:44:42 | 显示全部楼层
可以贴一下你的源码吗?以便分析分析
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2020-5-11 21:55:31 | 显示全部楼层
  1. /*
  2. *********************************************************************************************************
  3. *                                           LOCAL INCLUDES
  4. *********************************************************************************************************
  5. */

  6. #include "stm32f4xx_hal.h"
  7. #include "stm32f429i_discovery.h"
  8. #include "os.h"

  9. /*
  10. *********************************************************************************************************
  11. *                                            LOCAL DEFINES
  12. *********************************************************************************************************
  13. */

  14. /* Task Stack Size */
  15. #define APP_TASK_START_STK_SIZE 128u
  16. #define LED3_TASK_STK_SIZE 128u
  17. #define LED4_TASK_STK_SIZE 128u

  18. /* Task Priority */
  19. #define APP_TASK_START_PRIO 1u
  20. #define LED3_TASK_PRIO 2u
  21. #define LED4_TASK_PRIO 12u

  22. /*
  23. *********************************************************************************************************
  24. *                                       LOCAL GLOBAL VARIABLES
  25. *********************************************************************************************************
  26. */

  27. /* Task Control Block */
  28. static OS_TCB AppTaskStartTCB;
  29. static OS_TCB LED3TaskTCB;
  30. static OS_TCB LED4TaskTCB;

  31. /* Task Stack */
  32. static CPU_STK AppTaskStartStk[APP_TASK_START_STK_SIZE];
  33. static CPU_STK LED3TaskStk[LED3_TASK_STK_SIZE];
  34. static CPU_STK LED4TaskStk[LED4_TASK_STK_SIZE];

  35. /*
  36. *********************************************************************************************************
  37. *                                         FUNCTION PROTOTYPES
  38. *********************************************************************************************************
  39. */

  40. static void AppTaskStart(void *p_arg);
  41. static void LED3Task(void *p_arg);
  42. static void LED4Task(void *p_arg);

  43. /*
  44. *********************************************************************************************************
  45. *                                                MAIN
  46. *********************************************************************************************************
  47. */

  48. int main(void)
  49. {
  50.         OS_ERR err;

  51.         OSInit(&err);

  52.         OSTaskCreate((OS_TCB *)&AppTaskStartTCB,
  53.                                  (CPU_CHAR *)"App Task Start",
  54.                                  (OS_TASK_PTR)AppTaskStart,
  55.                                  (void *)0,
  56.                                  (OS_PRIO)APP_TASK_START_PRIO,
  57.                                  (CPU_STK *)&AppTaskStartStk[0],
  58.                                  (CPU_STK_SIZE)APP_TASK_START_STK_SIZE / 10,
  59.                                  (CPU_STK_SIZE)APP_TASK_START_STK_SIZE,
  60.                                  (OS_MSG_QTY)5u,
  61.                                  (OS_TICK)0u,
  62.                                  (void *)0,
  63.                                  (OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
  64.                                  (OS_ERR *)&err);

  65.         OSStart(&err);
  66. }

  67. /*
  68. *********************************************************************************************************
  69. *                                              STARTUP TASK
  70. *********************************************************************************************************
  71. */

  72. static void AppTaskStart(void *p_arg)
  73. {
  74.         OS_ERR err;

  75.         HAL_Init();
  76.         BSP_LED_Init(LED3);
  77.         BSP_LED_Init(LED4);

  78.         OSTaskCreate((OS_TCB *)&LED3TaskTCB,
  79.                                  (CPU_CHAR *)"LED3 TASK",
  80.                                  (OS_TASK_PTR)LED3Task,
  81.                                  (void *)0,
  82.                                  (OS_PRIO)LED3_TASK_PRIO,
  83.                                  (CPU_STK *)&LED3TaskStk[0],
  84.                                  (CPU_STK_SIZE)LED3_TASK_STK_SIZE / 10,
  85.                                  (CPU_STK_SIZE)LED3_TASK_STK_SIZE,
  86.                                  (OS_MSG_QTY)5u,
  87.                                  (OS_TICK)0u,
  88.                                  (void *)0,
  89.                                  (OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
  90.                                  (OS_ERR *)&err);

  91.         OSTaskCreate((OS_TCB *)&LED4TaskTCB,
  92.                                  (CPU_CHAR *)"LED4 TASK",
  93.                                  (OS_TASK_PTR)LED4Task,
  94.                                  (void *)0,
  95.                                  (OS_PRIO)LED4_TASK_PRIO,
  96.                                  (CPU_STK *)&LED4TaskStk[0],
  97.                                  (CPU_STK_SIZE)LED4_TASK_STK_SIZE / 10,
  98.                                  (CPU_STK_SIZE)LED4_TASK_STK_SIZE,
  99.                                  (OS_MSG_QTY)5u,
  100.                                  (OS_TICK)0u,
  101.                                  (void *)0,
  102.                                  (OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
  103.                                  (OS_ERR *)&err);
  104. }

  105. /*
  106. *********************************************************************************************************
  107. *                                                  TASKS
  108. *********************************************************************************************************
  109. */

  110. static void LED3Task(void *p_arg)
  111. {
  112.         OS_ERR err;

  113.         while (DEF_TRUE)
  114.         {
  115.                 BSP_LED_Toggle(LED3);

  116.                 OSTimeDlyHMSM((CPU_INT16U)0,
  117.                                           (CPU_INT16U)0,
  118.                                           (CPU_INT16U)1u,
  119.                                           (CPU_INT32U)0,
  120.                                           (OS_OPT)OS_OPT_TIME_HMSM_STRICT,
  121.                                           (OS_ERR *)&err);               
  122.         }
  123. }

  124. static void LED4Task(void *p_arg)
  125. {
  126.         OS_ERR err;

  127.         while (DEF_TRUE)
  128.         {
  129.                 BSP_LED_Toggle(LED4);
  130. /*               
  131.                 OSTimeDlyHMSM((CPU_INT16U)0,
  132.                                           (CPU_INT16U)0,
  133.                                           (CPU_INT16U)1u,
  134.                                           (CPU_INT32U)0,
  135.                                           (OS_OPT)OS_OPT_TIME_HMSM_STRICT,
  136.                                           (OS_ERR *)&err);
  137. */               
  138.         }
  139. }
复制代码
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2020-5-11 22:18:42 | 显示全部楼层
h_007 发表于 2020-5-11 21:44
可以贴一下你的源码吗?以便分析分析

源码上的优先级是2和12,led4常亮,led3间隔一秒闪烁,当换成2和3时,都是常亮。
回复

使用道具 举报

19

主题

372

回帖

429

积分

高级会员

积分
429
发表于 2020-5-11 22:33:31 | 显示全部楼层
建议如下修改,再试一试看看是否正常
1.
#define APP_TASK_START_PRIO 4u
#define LED3_TASK_PRIO 11u
#define LED4_TASK_PRIO 12u

2.
AppTaskStart函数的最后加上
while (DEF_TRUE)
        {
         // 延时10秒
         OSTimeDlyHMSM((CPU_INT16U)0,
                                          (CPU_INT16U)0,
                                          (CPU_INT16U)10u,
                                          (CPU_INT32U)0,
                                          (OS_OPT)OS_OPT_TIME_HMSM_STRICT,
                                          (OS_ERR *)&err);
}
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2020-5-11 23:26:48 | 显示全部楼层
h_007 发表于 2020-5-11 21:44
可以贴一下你的源码吗?以便分析分析

我想应该是ucos源码的问题,我刚从3.05版本换到了3.08版本就好了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 06:54 , Processed in 0.197192 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表