3746|2

35

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

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)
  • {
  • /* enable the LED GPIO clock */
  • rcu_periph_clock_enable(LED12_RCU);
  • rcu_periph_clock_enable(LED34_RCU);
  • /* configure LED GPIO pin */
  • 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);
  • /* reset LED 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;
  • /* enable COM GPIO clock */
  • rcu_periph_clock_enable(DEBUG_COM_GPIO_CLK);
  • /* enable USART clock */
  • rcu_periph_clock_enable(DEBUG_COM_CLK);
  • /* connect port to USARTx_Tx */
  • gpio_af_set(DEBUG_USART_GPIO_PORT, DEBUG_COM_AF, DEBUG_USART_TX_PIN);
  • /* connect port to USARTx_Rx */
  • gpio_af_set(DEBUG_USART_GPIO_PORT, DEBUG_COM_AF, DEBUG_USART_RX_PIN);
  • /* configure USART Tx as alternate function push-pull */
  • 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);
  • /* configure USART Rx as alternate function push-pull */
  • 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 configure */
  • 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开发板的介绍就先到这里,后续有时间再分享其他内容给大家。如果所发内容有什么错误或者大家有什么其他的见解,也欢迎大家在评论区指出,谢谢!

 

1.mp4

654.79 KB, 下载次数: 2

此帖出自GD32 MCU论坛

最新回复

谢谢分享   详情 回复 发表于 2022-1-17 21:06
点赞 关注
 

回复
举报

7032

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

连排针没有给配有点抠

还好点亮led灯测评挺顺

此帖出自GD32 MCU论坛
 
 
 

回复

7793

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享

此帖出自GD32 MCU论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 12

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表