查看: 2562|回复: 4

【GoKit试用体验】给固件移植上ucos-ii,再也不用担心延时了

[复制链接]
  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-11-11 09:31:45 | 显示全部楼层 |阅读模式
    分享到:
        首先看了官方给的代码,看了好几遍,总结一个字,烂!
    再看看驱动RGB灯的代码,发送clk的子函数都是几十毫秒的延时,点亮一个RGB等全过程需要1S以上。从cpu利用率上来讲,这是无法容忍的!
    所以必须使用RTOS,否则延时的时候,CPU没法做其他事情了。
    1.      由于公司电脑不允许安装MDK,所以用IAR工程,IAR的编译效率高,编译速度也快。
    移植步骤就不说了,网上一搜很多,我就直接把移植好的工程传上来,供大家直接使用!
    2.      关于底板灯的驱动,原理图的标号与PCB的丝印有些出入,这里必须指出,看了十几遍sch,发现了很多错误不严谨的地方(有一个吐槽贴说的也是这个:这个板绝对是软件工程师画的)
    现在修改led驱动如下:
      pcb上的丝印与原理图的标号不一致:
        pb1--led4(sch)--led4(pcb)
        pb11--led5(sch)--led3(pcb)
        pb14--led6(sch)--led2(pcb)
        pb15--led7(sch)--led1(pcb)
      为了使用户更直观,统一采用丝印上的led标号为标准。
    1. #ifndef __BSP_GOKIT_LED_H
    2. #define __BSP_GOKIT_LED_H         

    3. #include "stm32f10x.h"

    4. typedef enum
    5. {
    6.   LED1 ,
    7.   LED2 ,    //
    8.   LED3 ,    //
    9.   LED4     //
    10. } Led_TypeDef;

    11. // 移植的时候只需修改这里,无需修改函数
    12. /* 移植的时候特别注意:
    13.    说明:swd调试会占用2个IO口,即:swdio--pa13 swclk--pa14
    14.   实际连接stlink需要4根线 Target_VCC GND SWDIO SWCLK  */

    15. #define GPIO_LED1_CLK    RCC_APB2Periph_GPIOB
    16. #define GPIO_LED1_PORT   GPIOB
    17. #define GPIO_LED1_PIN    GPIO_Pin_15

    18. #define GPIO_LED2_CLK    RCC_APB2Periph_GPIOB
    19. #define GPIO_LED2_PORT   GPIOB
    20. #define GPIO_LED2_PIN    GPIO_Pin_14

    21. #define GPIO_LED3_CLK    RCC_APB2Periph_GPIOB
    22. #define GPIO_LED3_PORT   GPIOB
    23. #define GPIO_LED3_PIN    GPIO_Pin_11

    24. #define GPIO_LED4_CLK    RCC_APB2Periph_GPIOB
    25. #define GPIO_LED4_PORT   GPIOB
    26. #define GPIO_LED4_PIN    GPIO_Pin_1

    27. #define LED1_ON()                GPIO_ResetBits(GPIO_LED1_PORT, GPIO_LED1_PIN)
    28. #define LED1_OFF()                GPIO_SetBits(GPIO_LED1_PORT,GPIO_LED1_PIN)

    29. #define LED2_OFF()                GPIO_ResetBits(GPIO_LED2_PORT, GPIO_LED2_PIN)
    30. #define LED2_ON()                GPIO_SetBits(GPIO_LED2_PORT,GPIO_LED2_PIN)

    31. #define LED3_OFF()                GPIO_ResetBits(GPIO_LED3_PORT, GPIO_LED3_PIN)
    32. #define LED3_ON()                GPIO_SetBits(GPIO_LED3_PORT,GPIO_LED3_PIN)

    33. #define LED4_ON()                GPIO_ResetBits(GPIO_LED4_PORT, GPIO_LED4_PIN)
    34. #define LED4_OFF()                GPIO_SetBits(GPIO_LED4_PORT,GPIO_LED4_PIN)


    35. void LED_Toggle(Led_TypeDef LEDX);
    36.                   
    37. void BSP_LED_Init(void);//初始化
    复制代码

    1. /**
    2.   ******************************************************************************
    3.   * @file         BSP_Led.c
    4.   * @author  casy@ganx
    5.   * @version V1.0
    6.   * @Board         stm32
    7.   * @date         2014/12/29  
    8.   * 说明:        此c文件提供LED显示模块包含的所有函数功能
    9.     pcb上的丝印与原理图的标号不一致:
    10.     pb1--led4(sch)--led4(pcb)
    11.     pb11--led5(sch)--led3(pcb)
    12.     pb14--led6(sch)--led2(pcb)
    13.     pb15--led7(sch)--led1(pcb)

    14.   为了使用户更直观,统一采用丝印上的led标号为标准。
    15. ******************************************************************************/


    16. #include "bsp_gokit_led.h"


    17. /**
    18. ********************************************************
    19. * 函数名:void BSP_LED_Init(void)
    20. * 说明:LED初始化,LED4,LED5,LED6,LED7 high level Light on
    21. * 输入参数:void
    22. * 输出参数:void
    23. ********************************************************
    24. */
    25. void BSP_LED_Init(void)
    26. {
    27.           GPIO_InitTypeDef GPIO_InitStructure;
    28.         RCC_APB2PeriphClockCmd(GPIO_LED1_CLK | GPIO_LED2_CLK | GPIO_LED3_CLK | GPIO_LED4_CLK, ENABLE);
    29.        
    30.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    31.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    32.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    33.         
    34.         GPIO_InitStructure.GPIO_Pin = GPIO_LED1_PIN;
    35.         GPIO_Init(GPIO_LED1_PORT, &GPIO_InitStructure);       
    36.        
    37.         GPIO_InitStructure.GPIO_Pin = GPIO_LED2_PIN;
    38.         GPIO_Init(GPIO_LED2_PORT, &GPIO_InitStructure);       
    39.        
    40.         GPIO_InitStructure.GPIO_Pin = GPIO_LED3_PIN;
    41.         GPIO_Init(GPIO_LED3_PORT, &GPIO_InitStructure);               
    42.        
    43.         GPIO_InitStructure.GPIO_Pin = GPIO_LED4_PIN;
    44.         GPIO_Init(GPIO_LED4_PORT, &GPIO_InitStructure);       
    45.         
    46. }


    47. void LED_Toggle(Led_TypeDef LEDX)
    48. {

    49.   switch(LEDX)
    50.   {
    51.     case  LED1:
    52.       if((uint8_t)Bit_SET == GPIO_ReadOutputDataBit(GPIO_LED1_PORT, GPIO_LED1_PIN))
    53.         GPIO_ResetBits(GPIO_LED1_PORT,GPIO_LED1_PIN) ;
    54.       else
    55.         GPIO_SetBits(GPIO_LED1_PORT,GPIO_LED1_PIN);
    56.       break;

    57.     case  LED2:
    58.       if((uint8_t)Bit_SET == GPIO_ReadOutputDataBit(GPIO_LED2_PORT, GPIO_LED2_PIN))
    59.         GPIO_ResetBits(GPIO_LED2_PORT,GPIO_LED2_PIN) ;
    60.       else
    61.         GPIO_SetBits(GPIO_LED2_PORT,GPIO_LED2_PIN);
    62.       break;
    63.       
    64.     case  LED3:
    65.       if((uint8_t)Bit_SET == GPIO_ReadOutputDataBit(GPIO_LED3_PORT, GPIO_LED3_PIN))
    66.         GPIO_ResetBits(GPIO_LED3_PORT,GPIO_LED3_PIN) ;
    67.       else
    68.         GPIO_SetBits(GPIO_LED3_PORT,GPIO_LED3_PIN);
    69.       break;
    70.       
    71.     case  LED4:
    72.         if((uint8_t)Bit_SET == GPIO_ReadOutputDataBit(GPIO_LED4_PORT, GPIO_LED4_PIN))
    73.         GPIO_ResetBits(GPIO_LED4_PORT,GPIO_LED4_PIN) ;
    74.       else
    75.         GPIO_SetBits(GPIO_LED4_PORT,GPIO_LED4_PIN);
    76.       break;
    77.         
    78.       default:
    79.         break;
    80.   }

    81. }






    复制代码
    QQ图片20151111093106.jpg
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-11-11 09:33:12 | 显示全部楼层
    ucos下载地址:链接:http://pan.baidu.com/s/1eQhngGi 密码:7jh0
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-3-23 12:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-11-11 09:42:04 | 显示全部楼层
    对于我来说 并没什么乱用 我只是看看而已
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-6-2 19:59
  • 签到天数: 102 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-11-11 09:43:39 | 显示全部楼层
    谢谢分享!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-11-11 10:11:05 | 显示全部楼层
    哈哈,顶起来
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 08:38 , Processed in 0.162782 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.