完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 关于GPIO的问题集锦
1、关于GPIO 问:STM32的IO口初始化为输入浮空,那管脚是高电平还是低电平呢? 答:既不是高电平也不是低电平,悬空的意思是没有使用的状态。 2、有关stm32f103 端口复用的问题? 问:在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子: PB6 PB7默认情况下是做普通IO使用的,当我想用I2C1是,我开启RCC_APB1PeriphclockCmd(RCC_APB1Periph_I2C1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 当我要使用I2C1的重定义时,我要打开, RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 这样理解对不对? 有的人说当用的芯片自带的外设时都要打开 AFIO 时钟,但我用到usart1时没有打开AFIO 时钟,照样能用usart,这是为什么? 总之问这个问题的根本原因是AFIO的时钟要在什么情况下打开? 答:1、串口必须要打开AFIO时钟,不然不能工作。可能你的初始化函数、RCC配置中有开启的地方。 2、AFIO在你需要使用某一模块时,比如你想使用GPIOC,这个时候要打开GPIOC模块的时钟。 3、关闭I2C而不是关闭I2C模块的总线,如果你想使用普通模式,就要把I2C模块关闭以后,重新配置GPIOB模块,就可以正常使用了。 3、AFIO重映射的操作步骤是什么? 答:使能被重新映射到的I/O端口时钟使能被重新映射的外设时钟使能AFIO功能的时钟 (勿忘!) 进行重映射 4、配置IO口的频率问题 问:配置IO口的频率时,为什么只给一个IO口配置? 答:GPIO_InitStructure.GPIO_Speed 这个结构体的成员始终为GPIO_Speed_50MHz 配置其他io口时也默认用50MHz 。 5、请问怎样开始STM32W108CBU64芯片的PB5引脚外设输入中断? 问:有没有这么一个例程,有开启外设中断和中断函数的? 最佳答案:看了下datasheet,PB5复用的功能为PB5, ADC0, tiM2CLK, TIM1MSK,相关的中断应该有,就看你配置为什么外设了。 6、STM32F101 Tamper Pin 使用问题 问:请教各位大虾:STM32F101 BKP当中的Tamper Pin该如何初始化!? 答:当TPAL=0时:如果在启动侵入检测TAMPER引脚前(通过设置TPE位)该引脚已经为高电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现上升沿)。 ● 当TPAL=1时:如果在启动侵入检测引脚TAMPER前(通过设置TPE位)该引脚已经为低电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现下降沿)。 设置BKP_CSR寄存器的TPIE位为’1’,当检测到侵入事件时就会产生一个中断。 详见:BKP_CSR 7、有关stm32f103 端口复用的问题? 问: 在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子: PB6 PB7默认情况下是做普通IO使用的,当我想用I2C1是,我开启RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 当我要使用I2C1的重定义时,我要打开, RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 这样理解对不对? 有的人说当用的芯片自带的外设时都要打开 AFIO 时钟,但我用到usart1时没有打开AFIO 时钟,照样能用usart,这是为什么? 总之问这个问题的根本原因是AFIO的时钟要在什么情况下打开? 答:1、串口必须要打开AFIO时钟,不然不能工作。可能你的初始化函数、RCC配置中有开启的地方。 2、AFIO在你需要使用某一模块时,比如你想使用GPIOC,这个时候要打开GPIOC模块的时钟。 3、关闭I2C而不是关闭I2C模块的总线,如果你想使用普通模式,就要把I2C模块关闭以后,重新配置GPIOB模块,就可以正常使用了。 7、STM32里面,设置GPIO_Mode_IPU 有什么用 问:中断的配置里面有:GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9); GPIO口设置里面有: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPIO_InitStructure); 我想问的是,这两组设置必须同时存在吗? 答:GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9); STM32中这两句话的意思是PB口的8、9管脚作为外部中断的触发信号,所以Pin_8和Pin_9就要设置成输入的模式,而GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;中IPU是指IO口的工作模式是带上拉输入,这个和具体的电路有关,总之如果选择某个IO口作为外部中断的触发信号,就必须配置这个IO口为输入模式,不然无法触发中断 8、stm32中GPIO口的最大输出速度如何理解? 问:stm32中GPIO口的最大输出速度如何理解? 答:1、是这样的,2M、10M和50M是指GPIO口的采样频率。不知这样理解对不对,我就是这样做的。 2、我通过PB6采集80KBPS/S的方波,通过中断计采集,完全胜任。 9、STM32 GPIO 弱上拉能做输入输出吗 问:STM32 GPIO 弱上拉能做输入输出吗? 答:32只有上拉输入,用在外部连接的是下路输出的,这样才能正确读取。输出的话一般用推挽和开漏,推挽用于一般的驱动,开漏一般加上拉电阻像三极管集电极那样驱动较大电流。 10、STM32语句:GPIO-》ODR^=0X02 是怎么执行的?实现什么功能? 问:是GPIO端口的数据存在ODR寄存器,该数据与0x02异或再存在ODR中吗? 答:ODR是stm32的IO端口输出数据寄存器,该寄存器31-16位始终读为0,15-0位输出数据。GPIO-》ODR^=0X02 是输出数据与0x02异或,即输出数据的第二位如果与1相同,该位置0,反之出1,因此实现取反,输出数据保存在ODR,每执行一次输出数据的第二位取反一次。 10、GPIO配置速度 问:stm32中的GPIO如果设置成了输入模式,还需要配置GPIO_Speed么? 答:输入模式可以不用配置速度,但是输出模式必须确定最大输出频率。 11、stm32 GPIO输入电平检测 问:GPIO两个引脚,模式都初始化为输入弱上拉,给其中一个引脚接4.7V的电压,IDR对应的值为1;给另一个引脚接5.13V的电压,IDR对应的值却为0; 答:检查一下是否使能了相应GPIO的时钟,是否有这样一句RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx,ENABLE);有它就使能了,否则读出的值不可预测。 12、关于STM32中GPIO寄存器IDR和ODR数据 问:STM32中GPIO寄存器IDR和ODR数据是不是同步的?为什么我用GPIO_SetBits函数设置管脚的时候,IDR和ODR同时改变,怎么使得只改变ODR的数据,而不改变IDR的数据?谢谢! 答:IDR寄存器的数据时实时反映IO口的状态,当然设置ODR,IO的状态也跟着改变,除非强制人为地设置。比如,ODR设置为1,而强制将对应的IO口接地,这时IDR就和ODR不一致;或者将ODR设置0,而强制降对应IO口接VCC,这时也不一致。 13、用STM32,有六个GPIO口(不在同一组)要相同信号输出,请问怎么设置? 问:例如GPIOE的pin10重映射到TIM1,设置好TIM1的PWM信号输出;其他的IO口如GPIOA的pin5、GPIOA的pin6、GPIOB的pin5、GPIOB的pin6、GPIOC的pin5也要输出与GPIOE的pin10相同的信号,请问大侠怎么设置? 答:用定时器中断吧,把PWM的脉宽配置成定时中断,把GPIO引脚都配置好,相应时钟都使能,然后到定时器中断函数中做相同的处理。 14、关于GPIO_WriteBit与GPIO_SetBits 问:GPIO_WriteBit与GPIO_SetBits有什么区别 答:可以用man命令查看区别 man ioctl : NAME ioctl - control device man write : NAME write - write to a file descriptor 15、关于GPIO_InitTypeDef GPIO_InitStructure 问:这句话什么意思? 答:声明一个结构体,名字是GPIO_InitStructure,结构体原型由GPIO_InitTypeDef 确定,stm32里面初始化GPIO用的吧。。设置完了GPIO_InitStructure里面的内容后在GPIO_Init (GPIO_TypeDef 。 *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)里面调用,比如初始化pa口,就是GPIO_Init (GPIOA, &GPIO_InitStructure),括号里后面那个就是你问题里面声明的那个结构体。 16、关于 STM32的IO口能不能像51的IO口那样直接控制Px口输出 问:大家好,STM32的IO口能不能像51的IO口那样直接控制Px口输出?比如我要用51控制器段数码管,只要给Px口送十六进制数值就可以了?请问STM32可以吗? 答:可以的,举2个例子:GPIO0-》BRR = 0x55;GPIO1-》BSRR = 0x55;这其中的GPIOx表示IO号的号码,BRR/BSRR表示相就IO口的控制寄存器,就按这个格式操作就行了。 17、关于stm32芯片IO端口配置 问:stm32芯片 IO端口配置为浮空输入时,能不能读取端口上的电平状态。 答:STM32的输入状态寄存器GPIOx_IDR和输出状态寄存器和GPIOx_ODR的读取是不受端口配置影响的。 18、stm32 JTAG和普通IO复用问题 问:stm32 JTAG和普通IO复用,当软件设置为普通IO时,还能用JTAG下载软件吗。 答:能。因为在下载的时候,通过RESET时序进入了下载模式了。但是注意硬件的接法不要强制拉高拉低,也不要让其芯片的输出脚接过来。这样就会影响到jtag了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:13 , Processed in 0.838998 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号