stm32串口io配置5怎么配置

下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例..

         STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.读到这里相信大家都应该了解了端口重映射的一些概念了.原理上的东西不细说了,大家可以看手册或者网上查,这方面的资料还是很多的.下面说说我的调试经历.

        不知道是什么原因 PCB制图时把串口接到USART1上了,当时也没在意,等我把USART测试程序写好烧进去硬件仿真时,串口给的是乱码,我当时就觉得奇怪.把程序检查了好几遍就是查不出问题来,以为是硬件有问题,但突然想到了STM有复用功能,心想会不会是这里有鬼?于是找来datasheet 一看 ,真相大白


三个红框交汇处.STM32F103VCT6 这个CPU的USART1接的是PB6/PB7 但是上电初始化后默认功能并非是USART1.所以想要用串口功能 .必须用端口重映射..

   大家知道,STM32的单片机每个功能模块有自己的时钟系统,所以要想要调用STM32单片机的功能模块时 必须先配置对应时钟,然后才能去操作相应的功能模块.端口重映射也一样.如图示:

1.打开重映射时钟和USART重映射后的I/O口引脚时钟, 

3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.

      只需要这三步,串口就可以正常使用了,简单吧?  但是我纠结了大半个小时才搞定的,好多事情都是说起来容易做起来难的,希望我以后多多进步.不要眼高手低,嗯我正朝这个方向前进.

简单的说 STM32的 io 有3个功能一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用)

如果配置成复用 则将使用第2个功能 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能

通常一个口的 复用+重映射有好多 不止两个 这时候就看你使能哪个设备了(哪个被使能就用哪个) 

开复用 + 使能设备+ 是否重映射就可以决定这个io口到底使用哪个功能


生成之后,我用的事keil 编译的, 要去修改启动文件里面一个代码

其中1500是官方那个演示程序的设置.

算了直接上main.c里面的全部代码,其他的文件都不用修改


#endif好了,编译烧录,打开串口调试助手
**注意啊,串口调试助手里面,只需要选择相应的串口就可以了......其他的什么波特率啊,位数啊,都没用的..........
咱是usb虚拟的,没定义这个....不信你可以自己试试**

串口设置的一般步骤可以总结为如下几个步骤:

1) 串口时钟使能, GPIO 时钟使能
5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)
7) 编写中断处理函数

RXNE(读数据寄存器非空),当该位被置 1 的时候,就是提示已经有数据被接收到了,并
且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将
该位清零,也可以向该位写 0,直接清除。
TC(发送完成),当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如
果设置了这个位的中断,则会产生中断。该位也有两种清零方式: 1)读 USART_SR,写

我要回帖

更多关于 stm32串口io配置 的文章

 

随机推荐