GD32L233C-START开发板评测之开发板简介(一)
[复制链接]
本帖最后由 emmnn 于 2022-1-16 22:47 编辑
前言
年尾无事,上班论坛划水,偶然间看到有测评活动,申请后有幸成为第二批入围的体验者。在经过漫长地等待,期间因为疫情,还担心快递停运,所幸最终板子顺利到手。
一、板子介绍
对于板子的基本情况,已经有很多论坛的朋友发帖详细介绍过了,这里我就不再赘述,只简单介绍下最基本的情况。
这块开发板所使用的MCU是GD32L233CCT6,这是兆易在21年10月份推出的一款基于ARM Cortex-M23内核32MCU,整个芯片设计主打的是低功耗这一理念,可以应用于小型消费电子,便携式医疗设备等领域。GD32L233CCT6的片上flash高达256kb,同时带有32kb的SRAM,主频据介绍最高可达64MHZ。以上是MCU的基本情况,对于开发板,从上图可以看出来,基本上也没有什么东西,两个按键(一个复位按键),4个led灯,还带有一个USB转串口芯片CH340,其他也就没啥了。唯一值得一提的是,这个板子上面还集成了GD-Link(一开始拿到开发板时还在纳闷怎么有两个MCU在上面 )。整个PCB板感觉还是可以,但是还是有两个方面想吐槽下 ,一个是排针,没焊接可以理解,但是关键是,寄过来就这一块板啊,连排针也不给配 ,最难受的还是那几个MINI USB口,也没送,板子到手后翻箱倒柜找了很久才找到两条(其中一条还只能当供电线用 )。
二、例程
介绍完开发板的基本情况后,我们就可以开始写一下简单的例程跑一下板子了。
对于例程的编写,官方还是提供了很多的资料可以作为参考的。这里我们就从串口输出“hello world”和点亮led灯开始吧。
对于这部分的硬件原理图如下:
先从led开始,相关的宏定义+初始化如下
- #define LED12_RCU RCU_GPIOA
- #define LED34_RCU RCU_GPIOC
-
- #define LED12_GPIO_PORT GPIOA
- #define LED34_GPIO_PORT GPIOC
-
- #define LED1_GPIO_PIN GPIO_PIN_7
- #define LED1_GPIO_SET() gpio_bit_set(LED12_GPIO_PORT, LED1_GPIO_PIN)
- #define LED1_GPIO_CLR() gpio_bit_reset(LED12_GPIO_PORT, LED1_GPIO_PIN)
- #define LED1_TOGGLE() gpio_bit_toggle(LED12_GPIO_PORT, LED1_GPIO_PIN)
-
- #define LED2_GPIO_PIN GPIO_PIN_8
- #define LED2_GPIO_SET() gpio_bit_set(LED12_GPIO_PORT, LED2_GPIO_PIN)
- #define LED2_GPIO_CLR() gpio_bit_reset(LED12_GPIO_PORT, LED2_GPIO_PIN)
- #define LED2_TOGGLE() gpio_bit_toggle(LED12_GPIO_PORT, LED2_GPIO_PIN)
-
- #define LED3_GPIO_PIN GPIO_PIN_6
- #define LED3_GPIO_SET() gpio_bit_set(LED34_GPIO_PORT, LED3_GPIO_PIN)
- #define LED3_GPIO_CLR() gpio_bit_reset(LED34_GPIO_PORT, LED3_GPIO_PIN)
- #define LED3_TOGGLE() gpio_bit_toggle(LED34_GPIO_PORT, LED3_GPIO_PIN)
-
- #define LED4_GPIO_PIN GPIO_PIN_7
- #define LED4_GPIO_SET() gpio_bit_set(LED34_GPIO_PORT, LED4_GPIO_PIN)
- #define LED4_GPIO_CLR() gpio_bit_reset(LED34_GPIO_PORT, LED4_GPIO_PIN)
- #define LED4_TOGGLE() gpio_bit_toggle(LED34_GPIO_PORT, LED4_GPIO_PIN)
-
-
- void led_init(void)
- {
-
- rcu_periph_clock_enable(LED12_RCU);
- rcu_periph_clock_enable(LED34_RCU);
-
- gpio_mode_set(LED12_GPIO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED1_GPIO_PIN | LED2_GPIO_PIN);
- gpio_output_options_set(LED12_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED1_GPIO_PIN | LED2_GPIO_PIN);
- gpio_mode_set(LED34_GPIO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED3_GPIO_PIN | LED4_GPIO_PIN);
- gpio_output_options_set(LED34_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED3_GPIO_PIN | LED4_GPIO_PIN);
-
- gpio_bit_reset(LED12_GPIO_PORT, LED1_GPIO_PIN | LED2_GPIO_PIN);
- gpio_bit_reset(LED34_GPIO_PORT, LED3_GPIO_PIN | LED4_GPIO_PIN);
- }
接着就是USART部分的初始化
- #define DEBUG_COM_PER USART0
- #define DEBUG_COM_BAUD (115200UL)
- #define DEBUG_USART_GPIO_PORT GPIOA
- #define DEBUG_USART_TX_PIN GPIO_PIN_9
- #define DEBUG_USART_RX_PIN GPIO_PIN_10
-
- #define DEBUG_COM_CLK RCU_USART0
- #define DEBUG_COM_GPIO_CLK RCU_GPIOA
- #define DEBUG_COM_AF GPIO_AF_7
-
-
- void usartInit(uint32_t usart_periph, uint32_t baud)
- {
- uint32_t com_id = 0U;
-
-
- rcu_periph_clock_enable(DEBUG_COM_GPIO_CLK);
-
-
- rcu_periph_clock_enable(DEBUG_COM_CLK);
-
-
- gpio_af_set(DEBUG_USART_GPIO_PORT, DEBUG_COM_AF, DEBUG_USART_TX_PIN);
-
-
- gpio_af_set(DEBUG_USART_GPIO_PORT, DEBUG_COM_AF, DEBUG_USART_RX_PIN);
-
-
- gpio_mode_set(DEBUG_USART_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, DEBUG_USART_TX_PIN);
- gpio_output_options_set(DEBUG_USART_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, DEBUG_USART_TX_PIN);
-
-
- gpio_mode_set(DEBUG_USART_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, DEBUG_USART_RX_PIN);
- gpio_output_options_set(DEBUG_USART_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, DEBUG_USART_RX_PIN);
-
-
- usart_deinit(DEBUG_COM_PER);
- usart_baudrate_set(DEBUG_COM_PER, DEBUG_COM_BAUD);
- usart_receive_config(DEBUG_COM_PER, USART_RECEIVE_ENABLE);
- usart_transmit_config(DEBUG_COM_PER, USART_TRANSMIT_ENABLE);
- usart_enable(DEBUG_COM_PER);
- }
为了方便后续的调试工作,我们这边还需要将printf重定义到串口usart0输出,因此需要重定义fputc函数
- int fputc(int ch, FILE *f)
- {
-
- while(!usart_flag_get(DEBUG_COM_PER, USART_FLAG_TBE));
-
- usart_data_transmit(DEBUG_COM_PER, ch);
- return ch;
- }
ok,基本的工作都已经完成了,最后是main.c
- int main(void)
- {
- systick_config();
-
- usartInit(DEBUG_COM_PER, DEBUG_COM_BAUD);
- led_init();
- printf("hello world. \r\n");
-
- while(1) {
- LED1_TOGGLE();
- LED2_TOGGLE();
- LED3_TOGGLE();
- LED4_TOGGLE();
- delay_1ms(1000);
- }
- }
编译,烧录,最后运行如下
最后可以看到4个led灯按照1s的频率同时进行闪烁(效果可以看附件视频文件),同时查看串口输出
好了,今天关于GD32L233C-START开发板的介绍就先到这里,后续有时间再分享其他内容给大家。如果所发内容有什么错误或者大家有什么其他的见解,也欢迎大家在评论区指出,谢谢!
|