STM32的485配置

1前言

在做一个项目,(我的情况:STM32学了好久了,可是还是没做出什么东西来,学软件知识学硬件知识,学来学去都不知到自己该学什么了,可能是自己基础太欠缺了吧。然而生活得继续,继续学吧。)配置485,自己画板子,布局的时候,看485的端口放置的位置距离UART4比较近,(原理图一开始用的USART2),为了布线方便,就改了过来,改成UART4了。

2问题

配置的时候,出问题了,一直接收到的是00 00 00 00 ……
为什么呢?
找问题:
(2.1)怀疑电路,重新看资料,确认电路。之前没细心的注意MAX485 ,MAX3082 的供电问题。官方手册上都是5V电压供电,但是我用了3.3V已经作为电源了。(又看了看老同事的板子,有用485,是3.3V供电的,是可行的)。那么电路应该是没有问题的,再检查软件配置吧,软件配置要是没问题,那就回过来再找找硬件问题吧。
(2.2)软件配置:初学,不总结总是要再掉一次坑的。UART4没有接受中断。配置也没成功,有看手册,发现,PC10 PC11 UART4 REMAP之后就是USART3了。那么我就试了试(UART4的问题没找到,找的心态有点失落了,也工作了好久了,有些感想与感悟,在公司干活,做项目,做的好与差,先做出点东西来再说,不好了再升级,不要想着一次性到位。)配置REMAP USART3.。
REMAP的配置:之前就是不懂。不懂default 与 REMAP的区别,也不懂这两者该如何配置。后边搞懂了,也会配置了。
STM32的485配置_第1张图片
个人理解:
Default:默认的。I/O有I/O的功能,还有其他功能。比如:PC10/UART4_TX/SDIO_D2 这一串东西。我们怎么用?
【1】可以作为I/O使用
【2】可以作为UART4使用,我们看手册,PC10的default就是UART4。
配置:我们正常初始化PC10.然后再打开UART4的时钟,配置。
Remap:重映射。就是把这个端口直接用成重映射下边方框中的功能了。如何实现?

【1】在Default配置的基础上多了AFIO时钟的配置和要重映射的功能引脚的使能配置。
比如:
在这里插入图片描述

/*
 *			 Default 			 Remap
 *PC10		UART4_TX/SDIO_D2     USART3_TX
 *PC11		UART4_RX/SDIO_D3	 USART3_RX
 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|, ENABLE);//打开GPIOA端口时钟 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//打开USART3的时钟,挂载在APB1总线之下。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);	//打开重映射的时钟(如果是Default就不需要)
GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);  //USART3关键重映射使能。其实参数选择有:
														//GPIO_PartialRemap_USART3 和 GPIO_FullRemap_USART3 。
														//那到底是什么区别呢?我们翻手册,

STM32的485配置_第2张图片
STM32的485配置_第3张图片
说白了:部分映射与全映射。就是把这个功能放到这个引脚还是另外的引脚而已。

最后:我就是部分映射,配置的REMAP USART3 485 调试成功!
MAX485 MAX3082 亲测,3.3V供电没有问题!

你可能感兴趣的:(stm32)