国产 MCU AT32F403A 替换 STM32F103 usb虚拟串口通讯测试

第十一章AT32F403A替换stm32f103 usb虚拟串口通讯测试

前言

        此文章是使用AT32F403A的开发板去跑stm32f103usb虚拟串口通讯功能的测试情况。

硬件

      硬件方面使用的是自己画的板子,使用的AT32F403ARCT7,外设方面有USART2USART3CAN1CAN2SPIIICUSBSDIOUSART接的是sp3485的芯片;CAN的收发芯片都是SIT1050(芯力特国产品牌,可替换tja1050);SPI的是接了一颗W25Q12816M的容量;IIC接的是一颗AT24C04SDIO可插SD卡。仿真口以及串口1则使用的ATLINK的接口定义,直接使用ATLINK插上即可。USART2USART3485芯片,可以通过跳线帽对接起来;CAN1CAN2也是一样。

              

软件

   

        测试使用的软件是stm32f103的3.5标准库的工程代码。想快速验证的可以下正点、野火等的代码回来再根据自己外设的硬件的设计稍微修改就可以进行测试,就是库是stm32F103的3.5标准库的。

        下面是为了符合硬件去改动的一些代码(我板子没有显示屏)。(要是硬件都和那些教程都一样的,可以直接下载就可以。)

软件相关部分:

    

extern u16 USB_USART_RX_len;

 int main(void)
 {	 
 	u16 t;
	u16 len;	
	u16 times=0;    
	u8 usbstatus=0;	
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart1_init(115200);	 	//串口初始化为115200
	AT32LED_Init();		  		//初始化与LED连接的硬件接口
	

	delay_ms(1800);
	USB_Port_Set(0); 	//USB先断开
	delay_ms(700);
	USB_Port_Set(1);	//USB再次连接
 	Set_USBClock();   
 	USB_Interrupts_Config();    
 	USB_Init();	
	usb_printf ("AT32F403A 替换SXX32f103 usb 虚拟串口通讯测试!!\r\n");	 
	while(1)
	{
		if(USB_USART_RX_STA==1)
		{					   
			len=USB_USART_RX_len;//得到此次接收到的数据长度
			usb_printf("\r\n您发送的消息为:%d\r\n\r\n",len);
			for(t=0;t<len;t++)
			{
				USB_USART_SendData(USB_USART_RX_BUF[t]);//以字节方式,发送给USB 
			}
			usb_printf("\r\n\r\n");//插入换行
			USB_USART_RX_STA=0;
			USB_USART_RX_len=0;
		}else
		{
			times++;
			if(times%200==0)
			{
				usb_printf("\r\nUSB虚拟串口测速\r\n");
			}
			
			delay_ms(10);   
		}
	}
}

测试结果

       通过看串口助手的log,程序已经运行起来,收发的数据和我们设定的是一致的:

总结

        从测试来看,AT32F403A是可以直接的跑stm32f103usb的代码,在使用上一致。

本文仅供于学习、测试使用。

有什么问题的可加qq群技术交流。

### 回答1: STM32F103AT32F403A都是麒麟芯片的一种,但它们有一些不同的特性和架构,因此需要进行移植。 首先,在移植之前,我们需要了解STM32F103AT32F403A之间的差异。STM32F103基于ARM Cortex-M3内核,而AT32F403A基于ARM Cortex-M4内核。Cortex-M4内核相比Cortex-M3内核增加了浮点单元(FPU),这意味着AT32F403A可以更有效地处理浮点数。此外,AT32F403A还具有更快的时钟速度和更大的片上存储器(SRAM和Flash),这使得它更适合处理更复杂的应用程序。 其次,移植过程本质上就是将现有的STM32F103代码适应到AT32F403A上。这需要做一些修改,包括但不限于以下几个方面: - 芯片的引脚分配:由于不同芯片引脚定义不同,因此需要重新分配芯片引脚。 - 外设寄存器的地址:AT32F403A的外设寄存器的地址和STM32F103不同,因此需要修改它们的地址。 - 定时器:AT32F403A中硬件定时器的数量和类型不同于STM32F103,应对不同的芯片特性做出相应的改动。 - 代码编译:AT32F403A使用的编译器和STM32F103可能不同,因此需要对其进行更改以适应新的编译器。 最后,移植完成后需要进行测试,以确保代码能够正确工作。测试的目标应该是检查芯片的外设是否按照预期工作,确认代码在不同的运行模式下是否稳定,并确保代码正确适应不同的片上资源配置。 总之,将STM32F103移植到AT32F403A需要一些技术积累和耐心,需要深入了解两个芯片的差异并进行适当的代码修改才能成功移植。 ### 回答2: 首先,STM32F103AT32F403A是两种不同的芯片,它们的架构、引脚分配、外设等都不尽相同。因此,将STM32F103移植到AT32F403A需要进行一系列的修改和适配。 第一步,需要对AT32F403A进行硬件连接,包括外设驱动、定时器等。需要对原有的STM32F103的硬件驱动进行修改和适配,以适应AT32F403A的架构和特性。 第二步,需要进行基于AT32F403A的操作系统(OS)适配,包括底层驱动,Kernel(I/O 子系统、存储子系统)和FS(文件系统)等。需要调整原有应用程序的系统级别的API调用。 第三步,需要进行代码层面的移植。需要将原有的STM32F103的代码逐步迁移到AT32F403A的代码平台上,确保程序的正确性和稳定性。需要对原有代码进行修改和适配,以符合AT32F403A的特性和限制。 总结来说,STM32F103移植到AT32F403A需要进行一系列低层次的修改和适配,需要对底层硬件进行重新定义和适配,同时对系统级别和应用程序进行调整和迁移。这是一个较为复杂的技术工作,需要耐心和技术储备。 ### 回答3: 将STM32F103移植到AT32F403A是一项重要而复杂的任务,需要进行周密的计划和准备。 首先,需要了解这两种芯片的架构、指令集、外设以及寄存器等特性的差异和相似点。然后,根据这些差异和相似点,针对AT32F403A芯片特性,重新编写GPIO、UART、SPI、I2C等外设的驱动程序。 其次,需要根据AT32F403A的硬件资源和外设的接口特性,对原有的中断系统、时钟系统、存储器系统、DMA系统等多个模块,进行调整和修改,以适应移植的需求。 最后,需要进行严格的测试和验证,确保移植后的AT32F403A芯片在各方面都能够与STM32F103芯片达到相同的性能和稳定性,并且保证各种外设功能同样正常运行。 总之,将STM32F103移植到AT32F403A芯片,需要具有一定的芯片架构设计和底层软件开发经验,同时需要进行仔细的规划和测试,才能够实现一次成功的移植。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值