收到的开发板如下,板载了很多外设。还带有LCD屏和摄像头,以太网/USB等等。
image.png
GD32H759I-EVAL开发板,使用GD32H759IMK6作为主控制器。MCU主频高达600MHz,配备了3840KB的片上Flash及1024KB的SRAM,其中包含512KB可配置超大紧耦合内存(ITCM, DTCM),可确保关键指令与数据的零等待执行;还配备了64KB L1-Cache高速缓存(I-Cache, D-Cache),有效提升CPU处理效率和实时性。外部总线扩展(EXMC)支持访问SDRAM、SRAM、ROM、NOR Flash和NAND Flash等多种片外存储器。GD32H7内置了可实时跟踪指令和数据的宏单元ETM(Embedded Trace Macrocell),提供在不干扰CPU正常运行情况下的高级调试功能。GD32H7内置的大容量存储空间能够支持复杂操作系统及嵌入式AI、机器学习(ML)等多种高级算法,实现兼具高性能和低延迟的实时控制。

首先下载资料:
网址:兆易创新GigaDevice-资料下载兆易创新GD32 MCU
image.png

下载了mcu的用户手册和数据手册以及软件包和开发板历程。
image.png
因为例程都在库里面公用的,所以先搞个单独的工程出来,方便后面在模板基础上继续开发。
下面就是我新建的基础工程目录
image.png
打开keil工程,将代码文件添加到工程中。然后对工程进行一些设置。主要设置编译器优化参数,头文件路径包含,以及debug下载器设置。
image.png

image.png
image.png
下面接着修改main.c文件代码。
  1. #include "main.h"

  2. /*!
  3.     \brief      gpio configure
  4.     \param[in]  none
  5.     \param[out] none
  6.     \retval     none
  7. */
  8. static void gpio_config(void)
  9. {
  10.     /* enable the gpio clock */
  11.     rcu_periph_clock_enable(RCU_GPIOA);
  12.     rcu_periph_clock_enable(RCU_GPIOC);
  13.     rcu_periph_clock_enable(RCU_GPIOF);
  14.    
  15.     GPIO_BC(GPIOA) = GPIO_PIN_6;
  16.     GPIO_BC(GPIOF) = GPIO_PIN_10;
  17.     /* configure led GPIO port */
  18.     gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6); //LED2
  19.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_6);
  20.    
  21.     gpio_mode_set(GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10);//LED1
  22.     gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_10);
  23.    
  24.     /* configure button pin as input */
  25.     gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);  //WAKEUP KEY
  26.     gpio_mode_set(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_13);  //TAMPER_KEY
  27.     gpio_mode_set(GPIOF, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_8);  //USER_KEY
  28.    
  29. }
  30. /*!
  31.     \brief      usart configure
  32.     \param[in]  none
  33.     \param[out] none
  34.     \retval     none
  35. */
  36. static void usart_config(void)
  37. {
  38.     /* enable GPIO clock */
  39.     rcu_periph_clock_enable(EVAL_COM_GPIO_CLK);
  40.     /* connect port to USART0 TX */
  41.     gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, EVAL_COM_TX_PIN);
  42.     /* connect port to USART0 RX */
  43.     gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, EVAL_COM_RX_PIN);

  44.     /* configure USART TX as alternate function push-pull */
  45.     gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, EVAL_COM_TX_PIN);
  46.     gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, EVAL_COM_TX_PIN);

  47.     /* configure USART RX as alternate function push-pull */
  48.     gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, EVAL_COM_RX_PIN);
  49.     gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, EVAL_COM_RX_PIN);

  50.     /* enable USART clock */
  51.     rcu_periph_clock_enable(EVAL_COM_CLK);
  52.     /* USART configure */
  53.     usart_deinit(EVAL_COM);
  54.    
  55.     usart_word_length_set(EVAL_COM, USART_WL_8BIT);
  56.     usart_stop_bit_set(EVAL_COM, USART_STB_1BIT);
  57.     usart_parity_config(EVAL_COM, USART_PM_NONE);
  58.     usart_baudrate_set(EVAL_COM, 115200U);
  59.    
  60.     usart_receive_config(EVAL_COM, USART_RECEIVE_ENABLE);
  61.     usart_transmit_config(EVAL_COM, USART_TRANSMIT_ENABLE);
  62.     usart_enable(EVAL_COM);
  63. }

  64. /* retarget the C library printf function to the USART */
  65. int fputc(int ch, FILE *f)
  66. {
  67.     usart_data_transmit(EVAL_COM, (uint8_t)ch);
  68.     while(RESET == usart_flag_get(EVAL_COM, USART_FLAG_TBE));
  69.     return ch;
  70. }
  71. /*!
  72.     \brief      main function
  73.     \param[in]  none
  74.     \param[out] none
  75.     \retval     none
  76. */

  77. int main(void)
  78. {
  79.     /* enable the CPU cache */
  80.     /* enable i-cache */
  81.     SCB_EnableICache();
  82.     /* enable d-cache */
  83.     SCB_EnableDCache();
  84.     /* configure systick */
  85.     systick_config();
  86.    
  87.     gpio_config();
  88.     usart_config();
  89.    
  90.     /* output a message on hyperterminal using printf function */
  91.     printf("\r\n USART printf example.\r\n");
  92.    
  93.     while(1)
  94.     {
  95.         GPIO_TG(LED2_GPIO_PORT) = LED2_PIN;
  96.         delay_1ms(100);
  97.         GPIO_TG(LED1_GPIO_PORT) = LED1_PIN;
  98.         delay_1ms(100);
  99.          
  100.         if(gpio_input_bit_get(TAMPER_KEY_GPIO_PORT, TAMPER_KEY_PIN) == RESET)
  101.         {
  102.             printf("\r\n TAMPER_KEY Press.\r\n");
  103.         }
  104.         if(gpio_input_bit_get(WAKEUP_KEY_GPIO_PORT, WAKEUP_KEY_PIN) == RESET)
  105.         {
  106.             printf("\r\n WAKEUP_KEY Press.\r\n");
  107.         }
  108.         if(gpio_input_bit_get(USER_KEY_GPIO_PORT, USER_KEY_PIN) == RESET)
  109.         {
  110.             printf("\r\n USER_KEY Press.\r\n");
  111.         }
  112.     }
  113. }

  1. #ifndef MAIN_H
  2. #define MAIN_H


  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <stdint.h>

  7. #include "gd32h7xx.h"
  8. #include "gd32h759i_eval.h"
  9. #include "systick.h"



  10. #endif /* MAIN_H */
下面编译下载。可以看到串口输出显示了。
image.png

下载之后就可以看到led闪烁了,不过要注意一下跳线帽的位置。
image.png
整个工程测试没有问题了,下一步在此模板基础上做一些应用测试了。

下面是代码工程:
GDH7_Demo.zip (899.24 KB, 下载次数: 0)
全部回复 0
暂无评论,快来抢沙发吧