打印
[活动专区]

【AT-START-F407测评】+USART速度测试

[复制链接]
328|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 呐咯密密 于 2021-1-29 10:51 编辑

昨天稍微看了一下外观和表面性能,顺便赞扬了一下精美的外观和高主频特性,但是真正决定芯片性能的还必须看外设的性能,流水灯咱就不测试了,我直接就从USART开始。
因为板载了AT-Link,我就没有再外接其他LINK,按照手册所说,接上开发板,在keil的Debug 里选择 CMSIS-DAP 调试器。
第一个程序选择Printf(),测试例程和最基础的USART的使用。因为使用例程,就不多啰嗦代码的东西了,烧录连接串口助手,查看现象:

成功打印信息,测试通过。
下面测试串口的响应速度,因为在我的应用中,一向很看重串口的响应速度。
1.串口接收一个数据,触发中断后判断数据是否正确,正确返回另一个数据,采用库函数方式,波特率2500000,主频240M。
首先使能USART1的时钟、端口复用和引脚重定向:
RCC_APB2PeriphClockCmd( RCC_APB2PERIPH_AFIO | RCC_APB2PERIPH_USART1, ENABLE);//使能USART1
然后设置相关引脚:
  /* Configure USART1 Rx as input floating */
串口配置:
  USART_StructInit(&USART_InitStructure);
  USART_InitStructure.USART_BaudRate = 2500000;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  /* Configure USART1 */
  USART_Init(USART1, &USART_InitStructure);
  
  /* Enable USART1 Receive and Transmit interrupts */
  USART_INTConfig(USART1, USART_INT_RDNE, ENABLE);

  /* Enable the USART1 */
  USART_Cmd(USART1, ENABLE);
}

设置中断;
void NVIC_Configuration(void)
{
  NVIC_InitType NVIC_InitStructure;

  /* Configure the NVIC Preemption Priority Bits */  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

  /* Enable the USART1 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

}
配置中断函数:
void USART1_IRQHandler(void)
{
        uint8_t RxData;
  if(USART_GetITStatus(USART1, USART_INT_RDNE) != RESET)
  {
        RxData = USART_ReceiveData(USART1);
          if(RxData == 0x01)
          {
                USART_SendData(USART1,0x55);
          }
  }

}
烧录进开发板,串口助手打开,使用定时发送0x01,此时串口返回0x55,接上示波器查看波形:




从串口相应中断开始接收数据,到第一个数据发送间隔4.9us,从串口接收完数据到发送的第一个数据之间间隔1.4us,接收一个八位数据需要3.5us,发送一个八位数据需要3.6us。在240M主频和2.5M的波特率加持下这个速度并不是很理想,因为使用的是库函数所以这里不能完全说明单片机的性能,可能和库函数有关。后面会以跟帖的形式测试不使用库函数,直接操作寄存器的方式最大速度跑。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

351

主题

2775

帖子

40

粉丝