3376|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
点赞 关注
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

连排针没有给配有点抠

还好点亮led灯测评挺顺

此帖出自GD32 MCU论坛
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享

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

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

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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