STM32串口在程序中配置时PA9,USART-TX和PA10,USART-RX为什么工作模式配置成复用推挽输出和浮空输入??

作者&投稿:蔽京 (若有异议请与网页底部的电邮联系)
stm32 pa9配置成串口tx,发送数据时也是一直都是高电平不变~

设置成IO,初步判断stm32 pa9管脚没有问题。
配合串口调试助手,
如果接受没有问题,
stm32软件里面,你简单写 tx buf = rx buf
再逐步排查一下电路板、串口线上面有没有信号。

读取其他ARM芯片(如NXP)一般很容易看出芯片的设置是否正确。不过对于STM32就容易让人迷惑了。例如,我们在使用SPI总线进行通信时,可以这样设置:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 |
GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_AF_PP;
// 复用的推挽输出
答题是肯定的,对于STM32的这一类管脚来说(如USART_RX)即可以设置成为输入模式,也可以设置成为复用的推挽输出。其工作都是正常的,不过建议大家还是设置成为输入端口的好,容易理解。
具体产生这一问题的原因是:从功能上来说,MISO应该配置为输入模式才对,但为什么也可以配置为GPIO_Mode_AF_PP?请看下面的GPIO复用功能配置框图。当一个GPIO端口配置为GPIO_Mode_AF_PP是,这个端口的内部结构框图如下:图中可以看到,片上外设的复用功能输出信号会连接到输出控制电路,然后在端口上产生输出信号。但是在芯片内部,MISO是SPI模块的输入引脚,而不是输出引脚,也就是说图中的"复用功能输出信号"根本不存在,因此"输出控制电路"不能对外产生输出信号。

usart串口,首先tx是作为输出的,逻辑上输出的数据都是0或者1,也就是由高低电平来表示,推挽就是能稳定输出1或者0。而复用,是因为这个io受的是内部的的usart模块来控制,并非是gpio寄存器来控制。至于rx设置为浮空输入那就很好理解了,首先接收的肯定是要设置为输入,才能检测外界的电平,其次,浮空就能收到高和低的电平,也才能分析出0和1.

关于STM32的USART配置,需要完成以下几个步骤
1,打开USART时钟
2,配置PA9及PA10
由于USART属于可选功能项
所以TX要设置成GPIO_Mode_AF_PP;,即复用推挽输出
RX用于数据输入,被设置成浮空输入
这是由于STM32的IO口引脚总共只有以下几种模式
GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
对于特殊功能模式,只有一个复用开漏及复用推挽。
这两种都是用于输出的情况。
所以RX只能被设置成浮空输入
这不仅是USART,对于其他的如SPI也是如此。

这个,因为串口的两根数据线TX是用来发送数据,RX是用来接收数据的.然后复用是因为使用了GPIO的复用功能,然后推挽输出是为了增强IO口的输出能力.


关于自控系统的问题?
├—21世纪信息与通信技术教程 多媒体通信_0 ├—21世纪信息与通信技术教程 数字电路与FPGA_0 ├—21世纪信息与通信技术教程 数字语音:语音编码实用教程_0 ├—21世纪信息与通信技术教程 现代通信基础与技术_0 ├—21世纪大学计算机应用系列教材 JAVA与面向对象程序设计导论_0 ├—21世纪大学...

AMD A4 3400 APU with Radeon(tm) HDGraphics2.70GHZ 这个怎么样?_百度...
CPU配3650会好很多. 显卡上HD6750芯片以上的, 现在整套主机价位在3300左右. 配件都是一线品牌. 京东商城上的价钱.CPUAMD A-Serise X4 A6-3650盒装CPU(Socket FM1\/四核\/2.6GHz\/4M二级缓存\/HD 6530D\/32纳米\/100W) ¥529 主板华硕(ASUS)F1A75-V EVO主板(AMD A75\/Socket FM1) ¥699 内存金士顿...

博登815TM基本参数
主板的I\/O接口包括两个USB接口,一个红外线接口,一个PS\/2键盘接口和一个PS\/2鼠标接口,以及一个并口(EPP\/ECP)和两个串口(兼容6550A)。设计上,它采用ATX板型,尺寸为244 x 210毫米。BIOS方面,博登815TM采用Award的即插即用BIOS,支持DMI(桌面管理)功能,提供便捷的系统管理。此外,主板支持...

高分求串口服务器编程知识(急)
1.1 硬件系统组成模块 在制定设计方案和选定器件时遇到的技术难点是如何利用处理器对串口数据信息进行TCP\/IP协议处理,使之变成可以在互联网上传输的IP数据包。目前解决这个问题很多时候采用32位MCU + RTOS方案,这种方案是采用32位高档单片机,在RTOS(实时多任务操作系统)的平台上进行软件开发,在嵌入式...

pic18f452 单片机原理及引脚功能是什么
主同步串口(MSSP)模块;2种运作模式:3线SPITM(支持所有4线SPI模式);I2CTM主从模式;模拟功能:兼容的10位模数转换模块带有:快速采样率;可用转换睡眠;线形≤1LSB;可编程低电压检测(PLVD);支持中断低电压检测;可编程欠压复位(BOR);微控制器的特殊功能:可进行100000次擦写操作的闪存程序存储器(...

多串口扩展
VK3266是业界首款具备 UART\/SPITM\/8位并行总线接口的4通道UART器件。可以通过模式选择使得该芯片工作于以上任何一种主接口模式下:当主接口为UART时,VK3266将一个标准3线异步串口(UART)扩展成为4个增强功能串口(UART)。主接口UART在数据传输时可以选择需要转义字符和不需要转义字符两种模式。此外,...

合肥市18895601693: STM32F103RC的启动文件应该选哪个 -
厉烟盐酸: 下面贴的是主函数,做的就是将串口1进行配置,配置成中断的方式然后while 1 int main(void) {/* System Clocks Configuration */RCC_Configuration(); /* NVIC configuration */NVIC_Configuration();/* Configure the GPIO ports */GPIO_...

合肥市18895601693: stm32串口5怎么配置 -
厉烟盐酸: STM32串口配置的一般步骤(库函数)(1)串口时钟使能:RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHBxPeriphClockCmd();(2)引脚复用映射:GPIO_PinAFConfig();(3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_Mode_AF...

合肥市18895601693: stm32通过串口烧写程序是一直是这个问题,不知道该如何搞,求大神帮忙解答 -
厉烟盐酸: 1. 请确保你电脑上的串口工作正常,测试方法,打开一个串口调试助手,短接串口线的TX和RX,然后串口调试助手发送一个字符,比如a,如果串口通信正常,你能在串口调试助手中收到a. 2. 请确保STM32上用于ISP的串口是串口1,IO是PA9,PA10,如果是STM32F2XX,也可以是串口3. 3. 请确保STM32在上电时两个BOOT引脚的电平正确(BOOT0=1,BOOT1=0貌似,看手册). 4. 如以上条件满足,还是无法ISP,请调整串口波特率,比如9600,无校验.希望能帮到你,多实验吧楼主.

合肥市18895601693: STM32如何得到已经配置好的串口波特率 -
厉烟盐酸: 1. 串口的布特吕在串口模式配置中设定,具体是USART_InitStructure.USART_BaudRate = x;这句.一般来说x的值即波特率都是用常数给定的.2. 想查询的话此处使用宏代替函数在其他处直接使用该宏即为所求.3. 想在程序运行中修改波特率其实我不太赞成,如果要改前后一定要加上足够时间延时.只需把x用全局变量替换,修改时修改变量值.切记!修改波特率值后需要重新运行串口模式配置初始化的函数才生效!

合肥市18895601693: 如何通过串口烧写STM32程序 -
厉烟盐酸: 连接串口线到PA9 PA10 GND 用FLYMCU软件下载即可.

合肥市18895601693: STM32串口有第9位设置么 -
厉烟盐酸: USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; ...

合肥市18895601693: stm32什么触发串口接收中断 -
厉烟盐酸: 串口配置好即配置好GPIO和NVIC并初始化相应外设,然后每接受一个data就触发一次中断,转到中断入口处处理,然后清除中断标志位.一般情况下只有接受的时候采用中断方式,而发送只是放到buff寄存器里,不需要中断方式.以下是以前学...

合肥市18895601693: STM32串口有第9位设置么
厉烟盐酸: 看你们通讯格式,一般的话是8位的,8N1.

合肥市18895601693: 为什么STM32的串口不 -
厉烟盐酸: 检查中断中NVIC是否配置正确?NVIC_Init();检查UART时钟是否开启?RCC_APB1PeriphClockCmd();中断是否使能?USART_Cmd();以上函数的执行需要带参数的,实际参数跟你使用的端口和芯片有关.

合肥市18895601693: stm32波特率问题 -
厉烟盐酸: 说明你的STM32F407串口初始化函数有问题,多半是时钟方面的问题.你可以通过以下方法来测试是否是串口配置函数的问题,你用原来的配置函数初始化串口后,不断的发送“0xAA”,用示波器看一下波形,你就可以测出高低电平实际的持续时间,用1秒除以这个时间就得到你的实际波特率了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网