STM32系列常见问答集锦.docx

上传人:b****0 文档编号:533391 上传时间:2022-10-10 格式:DOCX 页数:41 大小:49.95KB
下载 相关 举报
STM32系列常见问答集锦.docx_第1页
第1页 / 共41页
STM32系列常见问答集锦.docx_第2页
第2页 / 共41页
STM32系列常见问答集锦.docx_第3页
第3页 / 共41页
STM32系列常见问答集锦.docx_第4页
第4页 / 共41页
STM32系列常见问答集锦.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

STM32系列常见问答集锦.docx

《STM32系列常见问答集锦.docx》由会员分享,可在线阅读,更多相关《STM32系列常见问答集锦.docx(41页珍藏版)》请在冰豆网上搜索。

STM32系列常见问答集锦.docx

STM32系列常见问答集锦

STM32系列常见问答集锦

STM32系列常见问答集锦【2012年10月25日更新】

一、STM32关于GPIO的问题集锦

二、STM32关于USART的问题集锦

三、关于STM32的中断问题集锦

四、关于STM32的SPI问题集锦

五、关于STM32的ADC/DAC问题集锦

六、关于STM32的DMA问题集锦

七、关于STM32的FLASH问题集锦

八、关于STM32的以太网问题集锦

九、关于STM32的定时器问题集锦

十、关于STM32的I2C问题集锦

十一、关于STM32的PWM问题集锦

十二、关于STM32的USB问题集锦

十三、关于STM32的JLINK问题集锦

十四、关于STM32其他问题集锦

一、STM32关于GPIO的问题集锦

1、关于GPIO

问:

STM32的IO口初始化为输入浮空,那管脚是高电平还是低电平呢?

答:

既不是高电平也不是低电平,悬空的意思是没有使用的状态。

2、有关stm32f103端口复用的问题?

问:

在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子:

PB6PB7默认情况下是做普通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、STM32F101TamperPin使用问题

问:

请教各位大虾:

STM32F101BKP当中的TamperPin该如何初始化!

答:

当TPAL=0时:

如果在启动侵入检测TAMPER引脚前(通过设置TPE位)该引脚已经为高电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现上升沿)。

●当TPAL=1时:

如果在启动侵入检测引脚TAMPER前(通过设置TPE位)该引脚已经为低电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现下降沿)。

设置BKP_CSR寄存器的TPIE位为’1’,当检测到侵入事件时就会产生一个中断。

详见:

BKP_CSR

7、有关stm32f103端口复用的问题?

问:

在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子:

 

PB6PB7默认情况下是做普通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、STM32GPIO弱上拉能做输入输出吗

问:

STM32GPIO弱上拉能做输入输出吗?

答:

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、stm32GPIO输入电平检测

问:

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命令查看区别

manioctl:

NAME

    ioctl-controldevice

manwrite:

NAME

    write-writetoafiledescriptor

15、关于GPIO_InitTypeDefGPIO_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、关于

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1