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_CSR7、有关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 deviceman write :NAME write – write to a file descriptor15、关于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了。