完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 中断函数不要随意使用prinf()函数
记调试步进电机加速减速过程的一次大坑。 2. 使用HAL库的时候不要在中断中使用HAL_Delay()函数 HAL库的HAL_Delay()函数是通过Systick定时器的1ms中断实现的,一般情况下Systick定时器的优先级设置为最低,因此在更高优先级的中断触发后导致HAL_Delay()函数uwtick值无法更新,因此程序会卡死在HAL_Delay()函数中。 3.注意STM32库在配置串口字长时是包含校验位的字长,而一般上位机配置的串口字长是不包含校验位的。 这点在配置使用校验时是非常重要的,如果配置出错会导致通讯不正常。 4.使用不同的开发板的时候一定要注意不同板子上的晶振可能是不一样的 之前用的板子是8M的晶振,配置好了可以正常使用。后面换了板子是25M晶振的。只修改了SystemClock_Config()函数中的因子,忘记修改晶振配置的值,导致时钟频率一直不对。晶振不同时,一定要到stm32xxxx_hal_conf.h中修改HSE_VALUE为相应的晶振值 5.移植FreeRTOS,让stm32hal和freeRTOS共用SYSTICK,程序全速运行会卡死在hardfault中断,但单步调试可以运行过去 在之前的板子上可以运行,但在后面新作的板子上出现了这个问题。(这一点感觉好奇怪) systick中断代码: void SysTick_Handler(void) { HAL_IncTick(); #if (INCLUDE_xTaskGetSchedulerState == 1 ) if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { #endif /* INCLUDE_xTaskGetSchedulerState */ xPortSysTickHandler(); #if (INCLUDE_xTaskGetSchedulerState == 1 ) } #endif /* INCLUDE_xTaskGetSchedulerState */ } 在stm32f4xx_it.c文件中一定要包含FreeRTOS.h头文件,否则会导致上述函数中条件编译的宏不会生效,导致在还没开启任务调度时,触发SysTick中断后会直接进入xPortSysTickHandler()函数,导致触发了hardfault中断。 6. STM32F429使用TIM2和TIM5的的注意事项 TIM2和TIM5是32位定时器,TIM2和TIM5产生PWM并通过DMA传输时必须按32位传输(即DMA设置的长度位32位)且用于为输出比较寄存器赋值的数组也必须为32为的(在使用TIM2和定时器5驱动WS2812时一定要注意)。
7. STM32F429不能够通过PA1和PA2输出PWM https://blog.csdn.net/xiaoyuanwuhui/article/details/109597401中有记录 8. STM32的部分外设在初始化初始化函数只能执行1次!!! 在使用STM32ADC外设时,红外测距模块和电流采样模块都用到了ADC,因而在两个模块分别初始化的时候调用了两次ADC初始化的函数bsp_adc1Init(),导致电流检测数据不正常(实际硬件测量没有电压,但ADC的采样值却有500多的值(实际应该在10左右))。在屏蔽掉红外测距模块的初始化函数后,数据便恢复正常了。 解决方法:仿照crazyfile代码中硬件外设初始化的方法,定义一个isInit的变量用于指示当前外设初始化函数是否执行过,如果执行过则直接跳出。 static bool isInit = false; void bsp_adc1Init(void) { if(isInit) { return; } /* init adc module */ //... isInit = ture; } 采用上述方式,可以防止adc外设被重复初始化,因此可以避免上面出现的问题,又可以很好的保证红外测距模块和电流采样模块的独立性和完整性。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试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 17:26 , Processed in 0.693356 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号