打印
[新品上市]

【APM32F107VCT6 MINI开发板测评】之串口测评

[复制链接]
547|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 woai32lala 于 2023-3-17 20:27 编辑

【APM32F107VCT6 MINI开发板测评】之串口测评
串口,是电子行业最常用的通讯接口。
无论是从事单片机、ARM,还是FPGA、DSP开发,都离不开串口!而且在一些银行、金融、证券、电信、工控的应用场合,还可能需要在一台主机上同时使用几十路串口!
AMP32F107VCT6共有5个串口,USART1、USART2、USART3、UART4和UART5。


这款芯片的串口资源还是相当的丰富的。
串口在使用很重要的一个功能的打印信息,也就是用到了printf函数,几乎每种ARM中都有这种重映射,非常方便。串口直接打印字符串,可以通过重映射C语言中的printf函数来实现。

下面我们就用例程USART_Interrupt来测评一下。

串口初始化

1、使能对应的管脚时钟和串口时钟,要注意的是串口1和串口2位于不同的时钟总线上,串口1位于APB2总线,串口2位于APB1总线。
2、设置波特率位115200
3、设置串口的接收和发送功能,无奇偶校验,1个停止位,8个数据位。
4、使能串口1的USART_INT_TXBE:  Tansmit data buffer empty interrupt,当寄存器数据为空时,使能串口1的寄存器为空中断处理函数。
5、使能串口2的接收中断函数,当有数据发送给串口2的接收引脚时,进入串口2的接收中断函数。
6、设置两个串口中断的优先级,串口1抢占优先级为2,串口2抢占优先级为1,可以看出串口2的优先级比串口1高。但在程序中华并没有看到对中断优先级的分组?来解释一下,系统复位后,系统复位之后,会将NVIC内核寄存器SCB->AIRCR的BIT10:8这三位变成000,也就是说默认采用分组方法0:从BIT0处进行分组,即BIT0代表子优先级,BIT1-7代表抢占优先级。具体在实际为4位的优先级系统中,则4位全都是抢占优先级,没有子优先级。
这样的话,抢占优先级范围为0-15共16级,0级响应优先级,所以开机不设定优先级分组也是可以工作的。此时,任意两个中断之间都是抢占关系(当然只有数值低的中断才能抢占数值高的中断了,注意数值越低越优先),你后面在给每个中断分配优先级时,抢占优先级可以在0-15内选择,无须设置响应优先级,假如这种优先级分组可以满足你全系统的实际要求,开机不设置优先级也无妨的。

串口1中断处理函数

可以看到进入该函数后,count ++,串口1发送数据txBuf数组中对应下标数据,当count值计数到数组大小值后,count被清0。

串口2中断处理函数

我们可以看到串口2中断处理函数,当串口2接收到数据后,进入中断,读取接收到的数据后,并通过printf函数打印格式化输出。
可以看到程序使用串口2作为打印输出COM口。
下面我们用逻辑分析仪测试串口1数据输出,用XCOM2上位机给串口2发送数据并接收发回数据。

接线

程序运行
1、程序开始运行后,进入发送寄存器为空中断,进行数据发送,我们用逻辑分析仪接收数据,下面是接收的数据。
2、XCOM2给串口2发送数据,串口2接收数据并将接收到的数据发送出来


可以看到watch中接收到的数据和XCOM发送数据一致。
以上就是对AMP32F107VCT6的串口测评。













使用特权

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

本版积分规则

107

主题

534

帖子

5

粉丝