[国产单片机] 【东软载波ES32F369x开发板】开箱点灯测试

[复制链接]
 楼主| WoodData 发表于 2021-1-25 22:31 | 显示全部楼层 |阅读模式
    收到开发板有几天了,下面看看收到的开发板图




开发板内还附带了一根OTG的转接USB线。烧写器是ES-LINK II,带USB转串口调试功能。

首先进行的是IO端口的点灯,按键和串口输出测试。通过SDK内工程模板新建一个工程。在开发板上可以清晰的看到2个LED灯对应端口为PF0,PF1。
一个5向按键,对应PC10,PC11,PC12,PB2,PB12。串口对应的是PB10,PB11。

在程序中针对这些IO端口初始化,以及串口初始化。


然后main函数中添加点灯程序和按键扫描程序。主函数如下,很简单。
  1. int main()
  2. {
  3.         uint32_t         ms,ledms;
  4.         uint32_t         key_val,key_old,key_xor;
  5.        
  6.         /* Initialize ALD */
  7.         ald_cmu_init();
  8.         /* Configure system clock */
  9.         ald_cmu_pll1_config(CMU_PLL1_INPUT_HOSC_3, CMU_PLL1_OUTPUT_96M);
  10.         ald_cmu_clock_config(CMU_CLOCK_PLL1, 96000000);
  11.         /* Enable peripheral clock */
  12.         ald_cmu_perh_clock_config(CMU_PERH_GPIO, ENABLE);
  13.         ald_cmu_perh_clock_config(CMU_PERH_UART0, ENABLE);
  14.        
  15.         uart_stdio_init();

  16.         memset(uart_buf, 0x0, 64);

  17.         light_init();
  18.         key_init();

  19.         printf_e("System start...\n");
  20.         light_ctrl(LIGHT_IDX_2, LIGHT_CTRL_ON);
  21.         ald_delay_ms(1000);
  22.         light_ctrl(LIGHT_IDX_2, LIGHT_CTRL_OFF);
  23.         ald_delay_ms(1000);
  24.        
  25.         ms = ald_get_tick()+10;
  26.         ledms = ald_get_tick()+1000;
  27.         key_old = 0;
  28.         while (1)
  29.         {
  30.                 //按键扫描
  31.                 if(ms < ald_get_tick())
  32.                 {
  33.                         ms = ald_get_tick()+10;
  34.                        
  35.                         key_val = 0;
  36.                         if(ald_gpio_read_pin(KEY_UP_PORT, KEY_UP_PIN) == 0)                        key_val |= 0x01;
  37.                         if(ald_gpio_read_pin(KEY_DOWN_PORT, KEY_DOWN_PIN) == 0)                key_val |= 0x02;
  38.                         if(ald_gpio_read_pin(KEY_LEFT_PORT, KEY_LEFT_PIN) == 0)                key_val |= 0x04;
  39.                         if(ald_gpio_read_pin(KEY_RIGHT_PORT, KEY_RIGHT_PIN) == 0)        key_val |= 0x08;
  40.                         if(ald_gpio_read_pin(KEY_CENTER_PORT, KEY_CENTER_PIN) == 0)        key_val |= 0x10;
  41.                        
  42.                         key_xor = key_old ^ key_val;
  43.                         if(key_xor & 0x01)
  44.                         {
  45.                                 if(key_val &0x01)
  46.                                 {
  47.                                         printf_e("key up press +\n");
  48.                                 }else
  49.                                 {
  50.                                         printf_e("key up relese-\n");
  51.                                 }
  52.                         }
  53.                        
  54.                         if(key_xor & 0x02)
  55.                         {
  56.                                 if(key_val &0x02)
  57.                                 {
  58.                                         printf_e("key down press +\n");
  59.                                 }else
  60.                                 {
  61.                                         printf_e("key down relese-\n");
  62.                                 }
  63.                         }
  64.                         if(key_xor & 0x04)
  65.                         {
  66.                                 if(key_val &0x04)
  67.                                 {
  68.                                         printf_e("key left press +\n");
  69.                                 }else
  70.                                 {
  71.                                         printf_e("key left relese-\n");
  72.                                 }
  73.                         }
  74.                         if(key_xor & 0x08)
  75.                         {
  76.                                 if(key_val &0x08)
  77.                                 {
  78.                                         printf_e("key right press +\n");
  79.                                 }else
  80.                                 {
  81.                                         printf_e("key right relese-\n");
  82.                                 }
  83.                         }
  84.                         if(key_xor & 0x10)
  85.                         {
  86.                                 if(key_val &0x10)
  87.                                 {
  88.                                         printf_e("key center press +\n");
  89.                                 }else
  90.                                 {
  91.                                         printf_e("key center relese-\n");
  92.                                 }
  93.                         }                       
  94.                         key_old = key_val;
  95.                 }
  96.                
  97.                 if(ledms < ald_get_tick())
  98.                 {
  99.                         ledms = ald_get_tick()+1000;
  100.                         light_ctrl(LIGHT_IDX_1, LIGHT_CTRL_TOGGLE);
  101.                         light_ctrl(LIGHT_IDX_2, LIGHT_CTRL_TOGGLE);
  102.                         printf_e("Count: %d\n", __cnt++);               
  103.                 }
  104.                
  105.                

  106.         }
  107. }
  1. void uart_stdio_init(void)
  2. {
  3.         gpio_init_t x;

  4.         /* Initialize tx pin */
  5.         x.mode  = GPIO_MODE_OUTPUT;
  6.         x.odos  = GPIO_PUSH_PULL;
  7.         x.pupd  = GPIO_PUSH_UP;
  8.         x.podrv = GPIO_OUT_DRIVE_6;
  9.         x.nodrv = GPIO_OUT_DRIVE_6;
  10.         x.flt   = GPIO_FILTER_DISABLE;
  11.         x.type  = GPIO_TYPE_TTL;
  12.         x.func  = UART_FUNC_TX;
  13.         ald_gpio_init(UART_PORT_TX, UART_PIN_TX, &x);

  14.         /* Initialize rx pin */
  15.         x.mode  = GPIO_MODE_INPUT;
  16.         x.odos  = GPIO_PUSH_PULL;
  17.         x.pupd  = GPIO_PUSH_UP;
  18.         x.podrv = GPIO_OUT_DRIVE_6;
  19.         x.nodrv = GPIO_OUT_DRIVE_6;
  20.         x.flt   = GPIO_FILTER_DISABLE;
  21.         x.type  = GPIO_TYPE_TTL;
  22.         x.func  = UART_FUNC_RX;
  23.         ald_gpio_init(UART_PORT_RX, UART_PIN_RX, &x);

  24.         /* Initialize uart */
  25.         h_uart.perh             = UART0;
  26.         h_uart.init.baud        = 115200;
  27.         h_uart.init.word_length = UART_WORD_LENGTH_8B;
  28.         h_uart.init.stop_bits   = UART_STOP_BITS_1;
  29.         h_uart.init.parity      = UART_PARITY_NONE;
  30.         h_uart.init.mode        = UART_MODE_UART;
  31.         h_uart.init.fctl        = UART_HW_FLOW_CTL_DISABLE;
  32.         h_uart.tx_cplt_cbk      = NULL;
  33.         h_uart.rx_cplt_cbk      = NULL;
  34.         h_uart.error_cbk        = NULL;
  35.         ald_uart_init(&h_uart);

  36.         return;
  37. }

  38. /**
  39.   * [url=home.php?mod=space&uid=247401]@brief[/url]  Initialize key.
  40.   * @retval None
  41.   */
  42. void key_init(void)
  43. {
  44.         gpio_init_t x;

  45.         x.mode = GPIO_MODE_INPUT;
  46.         x.pupd = GPIO_PUSH_DOWN;
  47.         x.flt  = GPIO_FILTER_DISABLE;
  48.         x.type = GPIO_TYPE_CMOS;
  49.         x.odos = GPIO_PUSH_PULL;
  50.         x.nodrv = GPIO_OUT_DRIVE_6;
  51.         x.podrv = GPIO_OUT_DRIVE_6;
  52.         x.func = GPIO_FUNC_1;
  53.        
  54.         ald_gpio_init(KEY_UP_PORT, KEY_UP_PIN, &x);
  55.         ald_gpio_init(KEY_DOWN_PORT, KEY_DOWN_PIN, &x);
  56.         ald_gpio_init(KEY_LEFT_PORT, KEY_LEFT_PIN, &x);
  57.         ald_gpio_init(KEY_RIGHT_PORT, KEY_RIGHT_PIN, &x);
  58.         ald_gpio_init(KEY_CENTER_PORT, KEY_CENTER_PIN, &x);

  59. }

  60. /**
  61.   * @brief  Initialize light.
  62.   * @retval None
  63.   */
  64. void light_init(void)
  65. {
  66.         gpio_init_t x;

  67.         x.mode = GPIO_MODE_OUTPUT;
  68.         x.odos = GPIO_PUSH_PULL;
  69.         x.pupd = GPIO_PUSH_UP;
  70.         x.podrv = GPIO_OUT_DRIVE_6;
  71.         x.nodrv = GPIO_OUT_DRIVE_6;
  72.         x.flt  = GPIO_FILTER_DISABLE;
  73.         x.type = GPIO_TYPE_CMOS;
  74.         x.func = GPIO_FUNC_1;

  75.         ald_gpio_init(LED1_PORT, LED1_PIN, &x);
  76.         ald_gpio_init(LED2_PORT, LED2_PIN, &x);
  77.         light_ctrl(LIGHT_IDX_1, LIGHT_CTRL_OFF);
  78.         light_ctrl(LIGHT_IDX_2, LIGHT_CTRL_OFF);

  79.         return;
  80. }






效果如上图。代码很简单就不上传了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

127

主题

4778

帖子

28

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