[APM32F4] 【APM32F411V Tiny Board】+开箱点灯

[复制链接]
 楼主| zhouminjie 发表于 2024-6-15 01:22 | 显示全部楼层 |阅读模式
本帖最后由 zhouminjie 于 2024-6-15 01:25 编辑

首次使用GeehyMCU,官网资料比较丰富,
开始点灯测试,官网下载SDK开发工具包,解压后在keil中安装F4系列Pack包,新建keil工程文件,添加SDK解压包中Libraries文件夹中.c.h等相关文件到工程中,
bbe02bffd1abc5eb9553101cb19d062f
点灯部分代码如下:
  1. #include "bsp_led.h"

  2. GPIO_T *led_gpio_port[LED_NUM] =
  3. {
  4.         LED_1_GPIO, LED_2_GPIO,
  5. };

  6. const uint16_t led_gpio_pin[LED_NUM] =
  7. {
  8.         LED_1_PIN, LED_2_PIN,                                       
  9. };

  10. const uint32_t led_gpio_crm_clk[LED_NUM] =
  11. {       
  12.         LED_1_GPIO_CRM_CLK, LED_2_GPIO_CRM_CLK,
  13. };

  14. // 不同芯片厂家修改
  15. static void led_init(LED_TYPEDEF led)
  16. {
  17.     GPIO_Config_T gpio_init_struct;

  18.     /* enable the led clock */
  19.     RCM_EnableAHB1PeriphClock(led_gpio_crm_clk[led]);

  20.     /* set default parameter */
  21.     GPIO_ConfigStructInit(&gpio_init_struct);

  22.     /* configure the led gpio */
  23.     gpio_init_struct.mode = GPIO_MODE_OUT;
  24.     gpio_init_struct.pin = led_gpio_pin[led];
  25.     gpio_init_struct.speed = GPIO_SPEED_50MHz;
  26.     GPIO_Config(led_gpio_port[led], &gpio_init_struct);
  27. }

  28. //
  29. static void led_on(LED_TYPEDEF led)
  30. {
  31.     if(led > (LED_NUM - 1))
  32.         return;

  33.     if(led_gpio_pin[led])
  34.         led_gpio_port[led]->BSCH = led_gpio_pin[led];
  35. }

  36. //
  37. static void led_off(LED_TYPEDEF led)
  38. {
  39.     if(led > (LED_NUM - 1))
  40.         return;

  41.     if(led_gpio_pin[led])
  42.         led_gpio_port[led]->BSCL = led_gpio_pin[led];
  43. }

  44. //
  45. static void led_toggle(LED_TYPEDEF led)
  46. {
  47.     if(led > (LED_NUM - 1))
  48.         return;

  49.     if(led_gpio_pin[led])
  50.         led_gpio_port[led]->ODATA ^= led_gpio_pin[led];
  51. }

  52. //
  53. void bsp_led_on(LED_TYPEDEF led)
  54. {
  55.     led_on(led);
  56. }

  57. //
  58. void bsp_led_off(LED_TYPEDEF led)
  59. {
  60.     led_off(led);
  61. }

  62. //
  63. void bsp_led_toggle(LED_TYPEDEF led)
  64. {
  65.     led_toggle(led);
  66. }

  67. //
  68. void bsp_Init_GPIO_Led(void)
  69. {
  70.     LED_TYPEDEF i;

  71.     for(i = LED_1; i < LED_NUM; i++)
  72.     {
  73.         led_init(i);
  74.         led_off(i);
  75.     }
  76. }
  1. #include "drv_led.h"

  2. unsigned short Led_Dark[]  = {0, 2, LED_EFFECT_END};
  3. unsigned short Led_Light[] = {1, 2, LED_EFFECT_END};
  4. unsigned short Led_Blink[] = {1, 1000 / LED_PROC_TICK, 0, 1000 / LED_PROC_TICK, LED_EFFECT_END};
  5. //unsigned short Led_Blink2[] = {1,10,0,10,1,10,0,210,LED_EFFECT_AGN,4};
  6. unsigned short Led_Blink3[] = {1, 1000 / LED_PROC_TICK, 0, 1000 / LED_PROC_TICK, LED_EFFECT_AGN, 2};

  7. unsigned short LedTimer[LED_NUM];                //灯状态保持的时间
  8. unsigned short *pLed[LED_NUM];                        //灯状态

  9. //
  10. static void LedDrive(LED_TYPEDEF led, unsigned char state)
  11. {
  12.     if(state)
  13.     {
  14.         bsp_led_on(led);
  15.     }
  16.     else
  17.     {
  18.         bsp_led_off(led);
  19.     }
  20. }

  21. //
  22. void (*drv_LedDrive[])(LED_TYPEDEF, unsigned char) =
  23. {
  24.     LedDrive, // LED1
  25.     LedDrive, // LED2
  26.        
  27. };

  28. // LED特效控制
  29. void drv_LedControl(LED_TYPEDEF LedIdx, LED_EFFECT_TEPEDEF State)
  30. {
  31.     switch(State)
  32.     {
  33.         case LED_DARK:
  34.             pLed[LedIdx] = (unsigned short *)Led_Dark;
  35.             LedTimer[LedIdx] = *(pLed[LedIdx] + 1);
  36.             break;

  37.         case LED_LIGHT:
  38.             pLed[LedIdx] = (unsigned short *)Led_Light;
  39.             LedTimer[LedIdx] = *(pLed[LedIdx] + 1);
  40.             break;

  41.         case LED_BLINK:
  42.             pLed[LedIdx] = (unsigned short *)Led_Blink;
  43.             LedTimer[LedIdx] = *(pLed[LedIdx] + 1);
  44.             break;

  45.         case LED_BLINK3:
  46.             pLed[LedIdx] = (unsigned short *)Led_Blink3;
  47.             LedTimer[LedIdx] = *(pLed[LedIdx] + 1);
  48.             break;

  49.         default:
  50.             break;
  51.     }
  52. }

  53. //
  54. void drv_Init_Led(void)
  55. {
  56.     LED_TYPEDEF i;

  57.     bsp_Init_GPIO_Led();

  58.     for(i = LED_1; i < LED_NUM; i++)
  59.     {
  60.         drv_LedControl(i, LED_BLINK);
  61.     }
  62. }

  63. //
  64. void drv_Led_All_Off(void)
  65. {
  66.     LED_TYPEDEF i;

  67.     for(i = LED_1; i < LED_NUM; i++)
  68.     {
  69.         drv_LedControl(i, LED_DARK);
  70.     }
  71. }

  72. //
  73. void drv_Led_All_On(void)
  74. {
  75.     LED_TYPEDEF i;

  76.     for(i = LED_1; i < LED_NUM; i++)
  77.     {
  78.         drv_LedControl(i, LED_LIGHT);
  79.     }
  80. }

  81. //
  82. void drv_Led_All_Blink(void)
  83. {
  84.     LED_TYPEDEF i;

  85.     for(i = LED_1; i < LED_NUM; i++)
  86.     {
  87.         drv_LedControl(i, LED_BLINK3);
  88.     }
  89. }

  90. //
  91. void drv_LedProc(void)
  92. {
  93.     LED_TYPEDEF i;

  94.     for(i = LED_1; i < LED_NUM; i++)
  95.     {
  96.         if(LedTimer[i])
  97.         {
  98.             LedTimer[i]--;
  99.         }
  100.         else
  101.         {
  102.             //定时时间到
  103.             if(*(pLed[i] + 2) == LED_EFFECT_END)
  104.             {
  105.                 //Led_Light[] = {1,10,LED_EFFECT_END};
  106.             }
  107.             else
  108.             {
  109.                 pLed[i] += 2;

  110.                 if(*pLed[i] == LED_EFFECT_AGN)
  111.                 {
  112.                     pLed[i] = pLed[i] - (*(pLed[i] + 1) * 2);

  113.                 }

  114.                 LedTimer[i] = *(pLed[i] + 1);
  115.             }
  116.         }

  117.         drv_LedDrive[i](i, *pLed[i]);

  118.     }
  119. }

代码工程: TEST_LED.rar (7.78 MB, 下载次数: 0)
huquanz711 发表于 2024-6-17 21:01 来自手机 | 显示全部楼层
都不上传一个运行效果图吗?
yangxiaor520 发表于 2024-6-18 19:18 来自手机 | 显示全部楼层
看来嵌入式软件开发的点灯就如应用软件的hello world一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

140

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部