5571|10

1059

帖子

1

TA的资源

版主

楼主
 

[GD32E231C-START] 串口shell调试 [复制链接]

 
上一节对已经初步体验了 GD32E231C,这一节讲究如何开发,对于开发mcu来说,需要了解其芯片手册以及sdk,通常我们找一些辅助来配合调试MCU,除了仿真器就是串口打印。这一节我们用shell辅助,之前找到一个shell,比较不错,所以移植到GD32E231C,要用串口shell,那就需要串口功能,本次采用中断接收,查询发送,代码如下:
  1. void com_gpio_init(void)
  2. {
  3.     /* enable COM GPIO clock */
  4.     rcu_periph_clock_enable(RCU_GPIOA);

  5.     /* connect port to USARTx_Tx */
  6.     gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9);

  7.     /* connect port to USARTx_Rx */
  8.     gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_10);

  9.     /* configure USART Tx as alternate function push-pull */
  10.     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9);
  11.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9);

  12.     /* configure USART Rx as alternate function push-pull */
  13.     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
  14.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_10);
  15. }
复制代码
  1. void com_usart_init(void)
  2. {
  3.     /* enable USART clock */
  4.     rcu_periph_clock_enable(RCU_USART0);

  5.     /* USART configure */
  6.     usart_deinit(USART0);
  7.     usart_word_length_set(USART0, USART_WL_8BIT);
  8.     usart_stop_bit_set(USART0, USART_STB_1BIT);
  9.     usart_parity_config(USART0, USART_PM_NONE);
  10.     usart_baudrate_set(USART0, 115200U);
  11.     usart_receive_config(USART0, USART_RECEIVE_ENABLE);
  12.     usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);

  13.     usart_enable(USART0);
  14.    
  15.     /* enable USART TBE interrupt */  
  16.     //usart_interrupt_enable(USART0, USART_INT_TBE);
  17.    
  18.     /* enable USART RBNE interrupt */
  19.     usart_interrupt_enable(USART0, USART_INT_RBNE);
  20.    
  21.     /* USART interrupt configuration */
  22.     nvic_irq_enable(USART0_IRQn, 0);
  23. }
复制代码

  1. void USART0_IRQHandler(void)
  2. {
  3.     uint8_t receiver_byte;
  4.     if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))
  5.     {
  6.         /* receive data */
  7.         receiver_byte = usart_data_receive(USART0);
  8.         shellHandler(&shell, receiver_byte);
  9.     }
  10. }
复制代码
  1. void shellprintchar(const char ch)
  2. {
  3.     usart_data_transmit(USART0, (uint8_t) ch);
  4.     while (RESET == usart_flag_get(USART0, USART_FLAG_TBE));
  5. }

  6. SHELL_TypeDef shell;

  7. void func(int i, char ch, char *str)
  8. {
  9.     printf("input int: %d, char: %c, string: %s\r\n", i, ch, str);
  10. }
  11. SHELL_EXPORT_CMD(func, func, test);

  12. void led0_on(void)
  13. {
  14.     gpio_bit_set(GPIOA, GPIO_PIN_7);
  15. }
  16. SHELL_EXPORT_CMD(led0_on, led0_on, led0_on);

  17. void led0_off(void)
  18. {
  19.     gpio_bit_reset(GPIOA, GPIO_PIN_7);
  20. }
  21. SHELL_EXPORT_CMD(led0_off, led0_off, led0_off);

  22. void led1_on(void)
  23. {
  24.     gpio_bit_set(GPIOA, GPIO_PIN_8);
  25. }
  26. SHELL_EXPORT_CMD(led1_on, led1_on, led1_off);

  27. void led1_off(void)
  28. {
  29.     gpio_bit_reset(GPIOA, GPIO_PIN_8);
  30. }
  31. SHELL_EXPORT_CMD(led1_off, led1_off, led1_off);

  32. void led2_on(void)
  33. {
  34.     gpio_bit_set(GPIOA, GPIO_PIN_11);
  35. }
  36. SHELL_EXPORT_CMD(led2_on, led2_on, led2_on);

  37. void led2_off(void)
  38. {
  39.     gpio_bit_reset(GPIOA, GPIO_PIN_11);
  40. }
  41. SHELL_EXPORT_CMD(led2_off, led2_off, led2_off);

  42. void led3_on(void)
  43. {
  44.     gpio_bit_set(GPIOA, GPIO_PIN_12);
  45. }
  46. SHELL_EXPORT_CMD(led3_on, led3_on, led3_on);

  47. void led3_off(void)
  48. {
  49.     gpio_bit_reset(GPIOA, GPIO_PIN_12);
  50. }
  51. SHELL_EXPORT_CMD(led3_off, led3_off, led3_off);
复制代码

效果如下:


通过shell来控制LED的亮灭,当然支持别的函数,自己添加支持即可,具体看代码里面的适配说明。

GD32E230_Demo_Suites_V1.0.1 shell.zip

1.47 MB, 下载次数: 64

此帖出自GD32 MCU论坛

最新回复

我移植了shell一直不行。来试一下  详情 回复 发表于 2022-4-11 13:22
点赞 关注(2)
 

回复
举报

10

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
楼主真贴心,上传了shell压缩包~~
此帖出自GD32 MCU论坛
 
 
 

回复

9805

帖子

24

TA的资源

版主

板凳
 
USB转串口使用的弯排针还是焊接?
此帖出自GD32 MCU论坛

点评

直接弯针勾上的  详情 回复 发表于 2019-3-24 12:19
 
 
 

回复

1372

帖子

6

TA的资源

版主

4
 
不错,谢谢分享!
此帖出自GD32 MCU论坛
 
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 

回复

530

帖子

4

TA的资源

一粒金砂(高级)

5
 
厉害了
此帖出自GD32 MCU论坛
 
 
 

回复

1059

帖子

1

TA的资源

版主

6
 
littleshrimp 发表于 2019-3-23 11:09
USB转串口使用的弯排针还是焊接?

直接弯针勾上的
此帖出自GD32 MCU论坛
 
 
 

回复

6112

帖子

4

TA的资源

版主

7
 
谢谢。
此帖出自GD32 MCU论坛
 
 
 

回复

137

帖子

0

TA的资源

一粒金砂(中级)

8
 
真心不错,好好学习
此帖出自GD32 MCU论坛
 
 
 

回复

122

帖子

0

TA的资源

纯净的硅(初级)

9
 
楼主有没有试过,把systick中延时时基变成1us(除以1000000),串口显示就不正常了,我也不知道什么情况,是不是我自己的问题。
此帖出自GD32 MCU论坛

点评

不能1us,你这样什么都不用做了,只是跑个中断了  详情 回复 发表于 2019-5-3 18:57
 
 
 

回复

1059

帖子

1

TA的资源

版主

10
 
长毛小兔 发表于 2019-5-2 20:03
楼主有没有试过,把systick中延时时基变成1us(除以1000000),串口显示就不正常了,我也不知道什么情况,是 ...

不能1us,你这样什么都不用做了,只是跑个中断了
此帖出自GD32 MCU论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

11
 
我移植了shell一直不行。来试一下
此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表