STM32开发笔记69: 外设启动的先后次序

在STM32F070F6P6开发中,增加Timer16定时器驱动后程序无法正常运行。问题源于启动顺序,Timer16先于L2初始化,导致1ms中断时L2未准备好。调整启动顺序,确保L2初始化后再启动Timer16,解决了中断错误,程序恢复正常运行。
摘要由CSDN通过智能技术生成

单片机型号:STM32F070F6P6


今天,在程序框架中增加了Timer16定时器驱动,但程序不能正常运行,本篇日志记录其原因。

驱动程序框架,定义了回调函数Timer16_InterruptFunction,写在main.cpp中用于逻辑层设计。Timer16_InterruptFunction调用的间隔为1ms,具体程序如下:

void Timer16_InterruptFunction(void)
{
	Target.HAL.L2.Turn();
}

此程序完成以1ms为间隔L2闪烁的程序,但是将此程序烧写到目标板后,程序不能正常运行。经过调试,最后将问题锁定在启动顺序上,看一下程序外设的启动顺序,具体程序如下:

class CHAL
{
public:
	CSystemInit SystemInit;
	CSystemClock SystemClock;
	CSystemTimer16 SystemTimer16;		
	CL1 L1;
	CL2 L2;
	CInfrare
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snmplink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值