GD32利用CubeMX构建代码的测试

news/2024/11/17 2:59:40/

前言

近期搞到一块GD32F103c8t6的开发板,号称是和STM32F103C8T6 Pin To Pin兼容的,查了一些资料,很多老哥也搞过类似的测试,多半结果是不兼容,具体哪里不兼容,哪些共功能不兼容,老哥们基本不说,所以我来把基础的功能测试一下,看哪些兼容哪些不兼容;

目标

本次测试功能:

  1. GPIO的输入输出
  2. 串口发送接收
  3. SPI总线的数据发送
  4. PWM输出
  5. RTC

这几部分都是很基础很基础的功能,所以CubeMX的配置我就不发了,大概说明一下,IO输出是PC13,IO输入是PA0,串口TX是PA9,RX是PA10;
配置过程我将按键(输入点)添加了内部下拉电阻
LED添加了上拉电阻(输出点),其余为默认,晶振使用8MHz的外部晶振,系统主频为72MHz,串口配置为波特率115200bps,数据位8,停止位1,无校验;
SPI使用的是SPI1,分频系数为32,其余默认即可,此次使用SPI控制0.96寸的OLED显示屏进行全亮和全灭控制,可由此得到SPI的发送功能是否健全;
PWM使用LED灯实现呼吸灯效果
RTC看时间是否能够正常按时间变化

GPIO硬件如图所示
在这里插入图片描述
串口我直接用TTL电平输出,我自己有TTL转USB的设备;

方案

代码功能很简单,按下按键(输入点为高电平),A寄存器自加,LED点亮(输出点为低电平)
每次刷新间隔500ms
每500ms发送一次 ASWaterbenben

串口接收中断回调则是将串口接收到的数据原模原样的发送回去;数据接收完毕的标记为回车符"0x0A";

main.c文件的主函数如下所示

int main(void)
{/* USER CODE BEGIN 1 */uint8_t Data[15] = {'A','S','W','a','t','e','r','b','e','n','b','e','n','\r','\n'};/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_RTC_Init();MX_TIM1_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1,MRxBuff_A,1);//启动串口中断/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)){if(A<0xFFFFFFFF){A++;}else{A=0;}HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_SET);}else{if(A<0xFFFFFFFF)B++;elseB=0;HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_RESET);}HAL_UART_Transmit(&huart1,Data,15,100);HAL_Delay(500);}/* USER CODE END 3 */
}

串口中断回调函数如下:

						if(MRxBuff_A[0] != 0x0A)//没有接收到回车符{if(count < 256){U1_Receive[count++] = MRxBuff_A[0];}else{count = 0;U1_Receive[count++] = MRxBuff_A[0];}}else//接收到回车符{U1_Receive[count++] = MRxBuff_A[0];HAL_UART_Transmit(&huart1,U1_Receive,sizeof(U1_Receive),1000);count = 0;}HAL_UART_Receive_IT(&huart1, MRxBuff_A, 1);

测试

测试结果:

  1. 按键测试
    按下按键,A寄存器自加,B寄存器无动作
    在这里插入图片描述

松开按键,B寄存器自加,A寄存器无动作
在这里插入图片描述
按键(GPIO输入测试成功,输入点可完美匹配)

  1. LED测试
    按键按下,LED亮
    在这里插入图片描述

按键松开,LED熄灭
在这里插入图片描述

经测试,GPIO输出点完全适配;

  1. 串口发送测试
    每500ms发送一次ASWaterbenben
    在这里插入图片描述

频率基本一致,串口发送可适配

  1. 串口接收测试

    从PC发送不愧是我后面带回车符号,串口能正常返回,说明串口接收正常!

  2. OLED的显示效果如下:
    在这里插入图片描述
    OLED屏能按要求闪烁,说明SPI总线发送功能正常

  3. PWM呼吸灯效果
    在这里插入图片描述

7.RTC时间效果
在这里插入图片描述

总结

总结如下:

功能适配结果备注
GPIO输入匹配
GPIO输出匹配
串口发送匹配
串口接收匹配
SPI发送匹配
PWM输出匹配
RTC匹配

接下来几期博客会继续往后测试基础功能,敬请期待!


http://www.ppmy.cn/news/796583.html

相关文章

linux php gd库安装,Linux系统gd库安装步骤说明

gd库是PHP处理图形的扩展库&#xff0c;它提供了一系列用来处理图片的API(应用程序编程接口)&#xff0c;使用gd库可以处理图片或者生成图片。在网站上&#xff0c;gd库通常用来生成缩略图&#xff0c;或者对图片加水印&#xff0c;或者生成汉字验证码&#xff0c;或者对网站数…

rhel安装php,如何在CentOS和RHEL上安装PHP7

php7.3是php的最新稳定版本&#xff0c;yum存储库正在为php7提供RPM包。本篇文章将使用remi和epel-yum存储库在你的系统上安装所需的软件包&#xff0c;将介绍在CentOS和Redhat7服务器上安装php 7.3、php 7.2、php 7.1。 设置yum存储库 首先&#xff0c;需要在系统上启用Remi和…

JVM 调优测试Jmeter 压测

Jmeter 内存不足了&#xff0c;修个5个线程吧 测试结果&#xff1a; Jmeter配置参数 5个线程&#xff0c;每个线程1秒跑1000次 测试串行吞吐量 -XX:PrintGCDetails -Xmx128M -Xms128M -XX:HeapDumpOnOutOfMemoryError -XX:UseSerialGC -XX:PermSize32M GC回收4次 吞吐量138…

RK1126从入门到放弃:(一)编译篇

安装必备软件&#xff1a; apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g-multilib unzip \ device-t…

keil GD32编译过程中出现“No space in execution regions with .ANY selector matching”问题

用keil GD32官方的例程基础上移植了自己的测试demo&#xff0c;编译验证成功&#xff0c;然后开始移植FreeRTOS&#xff0c;移植完就遇到了这个问题。 网上找到一篇文章&#xff0c;说是keil模拟的芯片内存远小于实际芯片内存。 因为每个人遇到的情况可能都不太一样&#xff0…

GD32F4xx调试笔记

GD32F4xx调试笔记 RCUSystickGPIOUSARTBasic TimerPWMDAC RCU 设置输入晶振频率 默认25MHz&#xff0c;需要根据硬件设备进行调整&#xff0c;这里设置为8MHz。/* define value of high speed crystal oscillator (HXTAL) in Hz */ #if !defined (HXTAL_VALUE) #define HXTAL…

STM32F1和GD32F1有什么区别?

关注、星标公众号&#xff0c;直达精彩内容 来源&#xff1a;嵌入式专栏 编辑整理&#xff1a;技术让梦想更伟大 | 李肖遥 受疫情及其它多种因素的影响&#xff0c;导致世界各大MCU厂家芯片价格不断上涨&#xff0c;特别是STM32部分型号的价格已经翻几倍了。 然后&#xff0c;有…

GD32E23x GPIO 模拟串口

因项目需要使用3个UART, 但该系列只有2个UART. 只好模拟一个出来使用。 所以&#xff0c;本篇文章&#xff0c;通过使用两个GPIO 口&#xff0c;加 一个定时器&#xff0c; 来达到 模拟串口的 功能。 代码仅供参考&#xff1a; 1. IO_USART.h #include "gd32e23x.h&…