完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 Segger Embedded Studio 6.32 为 STM32L062K8U6 开发一个项目。虽然 SES 项目向导创建了一些启动文件,但我没有使用任何预构建的库,而是根据“RM0376 参考手册超低功耗 STM32L0x2 高级 Arm®-based”中的信息开发我自己的所有代码32 位 MCU”和相关文档。
每次启用其中一个计时器时,我都会遇到硬故障问题。我有运行 500us 定时器延迟的代码,我已经用定时器 2、6、21 和 22 测试过,每种情况下的结果都相同。每次设置溢出标志时,主循环都会切换一个 IO 引脚。观察示波器上的输出,我可以看到我得到了正确的 500us 周期,但无论使用什么定时器,在运行 48 秒后我最终进入默认的硬故障异常处理程序。我无法解释这种行为,并且其他 ST Cortex M0 芯片上的定时器没有遇到过这个问题。 关于这个主题的互联网搜索出现了很多线索,表明问题可能出在调用不存在的 ISR 的处理器上。但是,如果这适用于我的情况,则会引发很多问题: * 中断不是全局启用的,那么为什么代码会尝试向量到 ISR,即使那样,为什么是硬故障而不是项目向导创建的默认 ISR? * 如果它是基于计时器的 ISR,为什么代码继续无错误运行 48 秒而不是在第一个 500us 后立即执行硬故障? * 如果设置或不设置定时器的 UIE 位,就会出现问题。 * 如果启用或不启用 WDT,就会出现问题,并且 WDT 定时器重置将有望重新启动代码而不是硬故障。 例如,当我在使用 tiM2 的硬故障处理程序中时:
|
|
相关推荐
1个回答
|
|
正如预期的那样,该问题与计时器本身无关。我让处理器以 32MHz 的最大速度运行,这需要将 FLASH_ACR 中的 LATENCY 位设置为 1,而不是默认值零。虽然我的配置函数中确实有一行代码处理了这一步,但它没有正确设置位,所以当我处理这个问题时,一切终于开始正常工作。对于与此相关的定时器做什么仍然是一个好奇的问题(也许自动重新加载到计数寄存器的写入不同步?),因为如果我只有切换的代码就不会出现这个问题不使用定时器的 IO 引脚状态。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2735 浏览 1 评论
3241 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1810 浏览 1 评论
3650 浏览 6 评论
6039 浏览 21 评论
1339浏览 4评论
201浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
350浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
444浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
274浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 07:17 , Processed in 0.947433 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号