欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    STM32系列常见问答集锦.docx

    • 资源ID:4475860       资源大小:51.05KB        全文页数:45页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    STM32系列常见问答集锦.docx

    1、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

    2、其他问题集锦一、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的重

    3、定义时,我要打开,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时钟,不然不能工作。可能你的初始化

    4、函数、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

    5、配置其他io口时也默认用50MHz 。5、请问怎样开始STM32W108CBU64芯片的PB5引脚外设输入中断?问:有没有这么一个例程,有开启外设中断和中断函数的? 最佳答案:看了下datasheet,PB5复用的功能为PB5, ADC0, TIM2CLK, TIM1MSK,相关的中断应该有,就看你配置为什么外设了。6、STM32F101 Tamper Pin 使用问题问:请教各位大虾:STM32F101 BKP当中的Tamper Pin该如何初始化!?答:当 TPAL=0时:如果在启动侵入检测TAMPER引脚前(通过设置TPE位)该引脚已经为高电平,一旦启动侵入检测功能,则会产生一个额外的侵

    6、入事件(尽 管在TPE位置1后并没有出现上升沿)。 当TPAL=1时:如果在启动侵入检测引脚TAMPER前(通过设置TPE位)该引脚已经为低电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件 (尽管在TPE位置1后并没有出现下降沿)。 设置BKP_CSR寄存器的TPIE位为1,当检测到侵入事件时就会产生一个中断。 详见:BKP_CSR7、有关stm32f103 端口复用的问题?问:在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子:PB6 PB7默认情况下是做普通IO使用的,当我想用I2C1是,我开启RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2

    7、C1,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 时钟,照样能用

    8、usart,这是为什么?总之问这个问题的根本原因是AFIO的时钟要在什么情况下打开?答:1、 串口必须要打开AFIO时钟,不然不能工作。可能你的初始化函数、RCC配置中有开启的地方。 2、AFIO在你需要使用某一模块时,比如你想使用GPIOC,这个时候要打开GPIOC模块的时钟。 3、关闭I2C而不是关闭I2C模块的总线,如果你想使用普通模式,就要把I2C模块关闭以后,重新配置GPIOB模块,就可以正常使用了。7、STM32里面,设置GPIO_Mode_IPU 有什么用问:中断的配置里面有:GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSo

    9、urce8); 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); G

    10、PIO_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、是

    11、这样的,2M、10M和50M是指GPIO口的采样频率。不知这样理解对不对,我就是这样做的。 2、我通过PB6采集80KBPS/S的方波,通过中断计采集,完全胜任。9、STM32 GPIO 弱上拉能做输入输出吗问:STM32 GPIO 弱上拉能做输入输出吗?答:32只有上拉输入,用在外部连接的是下路输出的,这样才能正确读取。输出的话一般用推挽和开漏,推挽用于一般的驱动,开漏一般加上拉电阻像三极管集电极那样驱动较大电流。10、STM32语句:GPIO-ODR=0X02 是怎么执行的?实现什么功能?问:是GPIO端口的数据存在ODR寄存器,该数据与0x02异或再存在ODR中吗?答:ODR 是stm3

    12、2的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的电压,I

    13、DR对应的值却为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,而强制将

    14、对应的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

    15、_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_InitStr

    16、ucture里面的内容后在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 = 0

    17、x55;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时序进入了下载模式了。但是注意硬件的接法不要强制拉高拉低

    18、,也不要让其芯片的输出脚接过来。这样就会影响到jtag了。二、STM32关于USART的问题集锦1、STM32103 USART1死机问:void USART_Receive(USART_TypeDef* USARTx)if (USART_GetFlagStatus(USARTx,USART_FLAG_RXNE)=SET)USART_ClearFlag(USARTx,USART_FLAG_RXNE);s0=USART_ReceiveData(USART1);delay(1000);s1=USART_ReceiveData(USART1);delay(1000);s2=USART_Receive

    19、Data(USART1);delay(1000);write_char(s0,s1,s2); /发送数据到PC/if(s0=0xff)GPIO_WriteBit(GPIOE,GPIO_Pin_0,Bit_SET); / /write_char(s0,s1,s2);/ query_uart_command(); /命令判断上面程序在发送FF的时候收到FF FF FF发送FF 22的时候收到FF 22 22发送FF 22 33时收到FF 22 22之后再发送数据时串口不响应! 答1:你这个程序,你收到第一个字节后,清标志,然后等待接后后面两个没有清标志。这也和两次发送时间 间隔有关答2:stm32

    20、串口有个可以说是bug的 地方,就是即使不使能溢出等其他错误中断的情况下,若发生溢出错误,仍会进入中断,而且常规检查中断的方法无法查到中断标志。所以办法就是在串口正常中断 处理之后加清除中断的语句。具体网上可以找到。之前因为这个原因,程序经常死掉,结果是死在串口中断处理里,不停中断,有没有清除中断标志哦。2、STM32F207的串口问题问:使用官方提供的串口例程时,定义串口25都没有问题。使用串口1或串口6时,无数据输出。TXD线上只是低电平。求解。 附上代码。 串口25,先提供官方例程 (例程链接:http:/www.stmcu.org/wall/index.php?act=read&id=

    21、5856)按照上面的例程,将串口3改为串口1后,串口1不能工作,TXD线上是低电平, 仿真时发现,程序停留在 while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXE) = RESET) 这个地方。 串口1的引脚定义是PA.09,PA.10 答1:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTx, ENABLE) for USART1 and USART6 * RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE) for USART2, USART3,

    22、UART4 or UART5. *3、stm32中的串口通信中的USART_WordLength,数据位的长度包不包括开始位哪些?问:stm32中的串口通信中的USART_WordLength,数据位的长度包不包括开始位哪些?答:不包括开始位,如果你有 校验(奇 偶)的话,数据位是包括校验位的。USART_WordLength 这个是可以设 94、stm32的DMA 到usart问:把一个数组的数据传输到USART。设为Circular时,DMA是不是会自动不停的传输数据?既是main函数里没有调用传输,DMA也会不停把数组的数据传给USART?不受main控制?DMA数据传输还是受CPU的控

    23、制的?需要认为的调用?答:设 置成循环的只是说当数据传输量寄存器里面的内容变为零会重新加载,然后重新传输,但是这一切前提都是进行了设置和使能(这里应该是DMA请求,我还没看出 来别的使能方式,正在学习呵呵),但是记住只有再怎么写好设置的子函数或者说模块,如果没有main里调用,不会运行的,因为单片机只执行MAIN里的函 数,如果没有调用语句,是不会自己跑到DMA设置子函数里的,也就是说不会不断执行。人为调用,设置一下各个寄存器,有传输的来源和目的设置有传输数据量 设置等等,设置完了,开启就可以了,CPU可以去干别的,看一下参考手册就知道了。5、STM32串口接收程序问:在STM32串口接收程序

    24、里 USART_GetFlagStatus(USART1,USART_FLAG_ORE)=RESET 这句语句是什么意思?答:查寻串口标志,为0还是1,reset 为0,set 为1,还有清除标志位的作用6、STM32F10XX系列SPI和USART区别问:STM32F10XX 系列SPI和USART区别?我想用USATR对SD卡进行读写是否可行?我用USART的同步方式跟SPI是一样的吗?我用的STM32中的USART 可以接SPI设备,它是一个同步/异步收发器。我在看开发板时看到有开发板是用SPI对SD卡进行操作的。应该是用的SD卡的MMC/SPI模式。只是没 有见到用它的USART读写S

    25、D卡的例子,不知道哪有这方面的资料。答:请 先SPI和USART都没有搞清楚,再搞用USATR对SD卡进行读写,我不知道你的sd卡是哪个型号,但是一般的存贮器件不会采用uart口的,SD卡 是用来存储大容量数据的,读写数据在速度在要求快,而uart口的速度一般不会很快,你看看你的串口调试助手就知道了,上面有波特率,所以sd卡不会用 uart口来读写的,再说了,用什么口来读写sd卡都是一样的,你只要按照datasheet 的命令格式给卡发送命令就可以操作它了,建议不要纠结这个问题!三、关于STM32的中断问题集锦1、STM32的EXIT的库函数问:EXTI_GetFlagStatus和EXTI_

    26、GetITStatus区别是什么? 答:一个是获取状态也的,一个是获取中断的。你可以看一下函数上面的说明。2、STM32的外部中断问:STM32的外部中断响应的最大频率是多少? 答:应该是2-3个机器周期3、判断中断是否会被响应的依据是什么?答:1、首先是占先式优先级,其次是副优先级; 2、占先式优先级决定是否会有中断嵌套; 3、Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。4、什么是占先式优先级?答:占先式优先级(pre-emption priority): 高占先式优先级的中断事件会打断当前的主程序/中断程序运行抢断式优先响应,俗称中断嵌套。5、什么

    27、是副优先级?答:副优先级(subpriority):1、在占先式优先级相同的情况下,高副优先级的中断优先被响应; 2、在占先式优先级相同的情况下,如果有低副优先级中断正在执行,高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应非抢断式响应(不能嵌套)。6、中断不进入是什么原因?答:1、未开启接收中断; 2、未配置中断向量开启7、 STM32的EXIT的库函数问:EXTI_GetFlagStatus和EXTI_GetITStatus区别是什么?答:一个是获取状态也的,一个是获取中断的。你可以看一下函数上面的说明。8、STM32的外部中断问:STM32的外部中断响应的最大频率是多

    28、少?答:应该是2-3个机器周期9、STM32的EXIT的库函数问题问:EXTI_GetFlagStatus和EXTI_GetITStatus区别是什么?答:一个是获取状态也的,一个是获取中断的。你可以看一下函数上面的说明。四、关于STM32的SPI问题集锦1、STM32F207 使用SPI2收不到数据的问题问:我使用STM32F207的SPI2控制模数转换器AD977时, STM32F207处理器的SPI2工作在单向只接收模式(从模式)下,我的SPI2总是接收不到数据(但在SPI2_MOSI管脚上有数据,时钟也有,我用示波器看的),请帮我分析一下。我的SPI及管脚配置如下:void SPI2_

    29、Config(void)/NVIC_InitTypeDef NVIC_InitStructure;/* Enable the SPI clock */RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);/* Enable GPIO clocks */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);/* Connect SPI pins to AF5 */GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);/GPIO_PinAF

    30、Config(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;/GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;/GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;/* SPI SCK pin configuration */GPIO_InitStructure.GPIO_Pin =GPIO

    31、_Pin_13;/GPIO_Init(GPIOB, &GPIO_InitStructure);/* SPI MOSI pin configuration */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;/GPIO_InitStructure.GPIO_Mode = GPIO_Mode


    注意事项

    本文(STM32系列常见问答集锦.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开