STM32开发过程的常见问题

STM32开发过程中遇到的一些问题,记录如下。

Q1:下载后程序不运行,反复排查代码没问题。
A1: 栈空间太小,打开startup_stm32f10x_hd.s,把 Stack_Size EQU 0x0200 后面这个数改成0x0800就好了(512 > 2000)。

Q2:DAC+DMA生成正弦波,有时正常,有时不正常。
A2: DAC_InitStructure结构中少初始化了一项DAC_LFSRUnmask_TriangleAmplitude,运行时该参数不确定,所以时有时无,加上DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;工作正常。STM32函数库中有很多结构,一定要把各项都初始化,否则出现不稳定的情况很不容易找问题,很费时间。

Q3:TIM1 PWM不工作
A3:TIM1/8是高级定时器,除普通定时器设置外,还要加一句 TIM_CtrlPWMOutputs(TIM1, ENABLE);

Q4:如何把编码器16位数扩展32位?
A4:在定时器溢出中断中根据计数方向对扩展的高16位进行借位或进位,但要考虑中断函数和主循环的数据同步,参看《STM32实战九 编码器》中 getData() 方法

Q5:能不能用5V电源?
A5:我把5V和3.3V短接,统一用5V,约2个月,工作正常,估计能用。型号:STM32F103VET6

Q6:升级到F407VE,出现各种死机
A6:多数都是中断函数名称变了。

Q7:把代码整理一下就不能用了?
A7: STM32 CAN通讯莫名其妙的奇怪问题,开发板带的原码,测试通过,移植到我的程序通过,过了几天,把代码整理了一下,就不能用了,恢复成原来的代码还能用,把一些没用的代码删除后就不能用了,最后跟踪汇编把有的寄存器的值改过来就能用,最后发现结构没有初始化,加一句GPIO_StructInit( &GPIO_InitStructure );初始化结构就好了,耽误了一天时间。为什么加一些没有的代码就行呢?因为这些代码正好把这个寄存器改成符合下面使用的了。
        这个问题与Q2一样,这次是IO口没有初始化,多加注意。
 

 

 

STM32实战系列源码,按键/定时器/PWM/ADC/DAC/DMA/滤波
STM32实战一 初识单片机
STM32实战二 新建工程
STM32实战三 C++ IO.cpp
STM32实战四 定时器和按键
STM32实战五 板载LED显示数据
STM32实战六 PWM加移相正交
STM32实战七 数字滤波
STM32实战八 DAC/ADC
STM32实战九 编码器
STM32开发过程的常见问题

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值