博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32开发笔记69: 外设启动的先后次序
阅读量:2041 次
发布时间:2019-04-28

本文共 553 字,大约阅读时间需要 1 分钟。

单片机型号: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;	CInfraredEmission InfraredEmission;};

程序先启动的Timer16,后启动的L2,由于TImer16启动后,立刻发生中断,则会执行Timer16_InterruptFunction中的程序,而此时L2还未初始化,

转载地址:http://wkjof.baihongyu.com/

你可能感兴趣的文章
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
Leetcode C++ 剑指 Offer 09. 用两个栈实现队列
查看>>
Leetcode C++《每日一题》20200707 112. 路径总和
查看>>
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>