[活动] 【APM32F107VCT6 MINI开发板测评】串行通讯功能测试

[复制链接]
1258|5
 楼主| jinglixixi 发表于 2023-2-14 14:01 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2023-2-14 14:04 编辑

APM32F107开发板提供了较为丰富的例程,通过下载SDK压缩包即可达到,解压后其例程文件夹如图1所示。
a.jpg
1.jpg
1 例程文件夹

在没有其它显示器件的情况下,串口就是必不可少的工具了,于是先对串口通信功能进行一下测试。
在开发板上,配有RS232的串行接口电路,见图2和图3所示。
由此可知,共用2个串口可用,即UART1UART2,其中:
PA9 ---U1_TX
PA10---U1_RX
PA2 ---U2_TX
PA3---U2RX

在使用时,通过J3上的短接子就可进行串口的切换。
2.jpg
2 串行接口线路

3.jpg
3 串行接口电路


为验证串口通信功能,这里选取的是例程USART_Printf。由于电脑上没提供RS232接口,故采用USBTTL模块来测试,其线路连接见图4所示。
4.jpg
4 测试连接


在下载程序后,其运行效果如图5所示。
5.jpg
5 运行效果


比较讨厌的是在输出的结果中总是多出一个“\0,通过对程序的分析,分析是for循环的条件有问题。此外,许数串口设备的波特率是9600bps,故一同也进行了修改,修改后的程序如下:
  1. volatile uint32_t tick = 0;
  2. uint8_t txBuf[] = "Hello USART1 \n\r";

  3. int main(void)
  4. {
  5.     uint8_t i;
  6.     GPIO_Config_T GPIO_ConfigStruct;
  7.     USART_Config_T USART_ConfigStruct;
  8.     APM_MINI_LEDInit(LED2);
  9.     RCM_EnableAPB2PeriphClock((RCM_APB2_PERIPH_T)(RCM_APB2_PERIPH_GPIOA | RCM_APB2_PERIPH_USART1));
  10.     GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;
  11.     GPIO_ConfigStruct.pin = GPIO_PIN_9;
  12.     GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
  13.     GPIO_Config(GPIOA, &GPIO_ConfigStruct);
  14.     //USART_ConfigStruct.baudRate = 115200;
  15.     USART_ConfigStruct.baudRate = 9600;
  16.     USART_ConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
  17.     USART_ConfigStruct.mode = USART_MODE_TX;
  18.     USART_ConfigStruct.parity = USART_PARITY_NONE;
  19.     USART_ConfigStruct.stopBits = USART_STOP_BIT_1;
  20.     USART_ConfigStruct.wordLength = USART_WORD_LEN_8B;
  21.     USART_Config(USART1, &USART_ConfigStruct);
  22.     USART_Enable(USART1);
  23.     SysTick_Config(SystemCoreClock / 1000);
  24.     while(1)
  25.     {
  26.         Delay();
  27.         //for(i = 0; i < sizeof(txBuf); i++)
  28.         for(i = 0; i < (sizeof(txBuf)-1); i++)
  29.         {
  30.             while(USART_ReadStatusFlag(USART1, USART_FLAG_TXBE) == RESET);
  31.             USART_TxData(USART1, txBuf[i]);
  32.         }
  33.         APM_MINI_LEDToggle(LED2);
  34.     }
  35. }

这样再运行程序,其结果就正常了,见图6所示。
6.jpg
6 修改后的效果


如果以RS485模块来与板上的串口连接,则可实现RS485设备间的串行通讯,当然在通讯时要有相应的协议来辅助管理通讯过程。


tifmill 发表于 2023-6-10 15:44 | 显示全部楼层
apm32可以直接用stm32的库吗
jimmhu 发表于 2023-6-10 16:47 | 显示全部楼层
apm32是哪家公司的               
 楼主| jinglixixi 发表于 2023-6-11 08:48 | 显示全部楼层
jimmhu 发表于 2023-6-10 16:47
apm32是哪家公司的

珠海极海半导体有限公司
 楼主| jinglixixi 发表于 2023-6-11 08:50 | 显示全部楼层
tifmill 发表于 2023-6-10 15:44
apm32可以直接用stm32的库吗

没试过,应该有差异吧!
forgot 发表于 2023-6-28 17:05 | 显示全部楼层
感谢楼主的分享,很全面,学习一下,期待更多好的内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

519

主题

2944

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部