gpt4 book ai didi

轻松更改嵌入式软件中的外设定时器

转载 作者:行者123 更新时间:2023-11-30 20:19:09 24 4
gpt4 key购买 nike

我正在为微芯片 pic16f 开发一个嵌入式软件项目。这张照片只有三个计时器。

现在我有一个使用timer0和timer1的驱动程序(我们称之为驱动程序A)。现在我想向我的程序添加功能(驱动程序b),但这需要使用timer1。但是timer1已经被驱动程序A使用了。

我可以重写驱动程序A,使其使用timer0和timer2,以便驱动程序b可以使用timer1。

但也许在即将到来的项目中,我想使用我的驱动程序 A,但使用计时器 1 和 2,因此计时器 0 可以用于另一个驱动程序 c,并且必须再次重写我的驱动程序。对于三个计时器,可能的组合并不多,但即使使用这个基本的 cpu,我也会有许多不同版本的工作驱动程序 A,这使得管理它们和修复代码中的错误变得不切实际。 (想象一下这个驱动程序用于具有更多定时器的 MCU,甚至有更多可能的方式来编写驱动程序 A)

如何解决这个问题?如何编写一个没有硬编码定时器的驱动程序,并在初始化时分配一个合适的定时器?我认为在 c++ 中,每个计时器都是一个从计时器父类(super class)继承的对象,您可以将其作为对象传递给 driverA 的构造函数,但我在 c 中工作,因此我不能使用对象。

最佳答案

您提出的问题可能没有适合您经验水平的答案。 Microchip PIC16F 系列 Controller 的资源非常有限,因此面向对象的编程技术的值(value)有限。

这并不是说模块化编程、有限的范围和您已经知道的干净的编码实践没有巨大的值(value),它们确实具有巨大的值(value)。

如果您想要相当于 PIC16F 的通用定时器类,则必须使用标准 C 编译器结构为您的应用程序编写它。 PIC16F 目标的可用代码和 RAM 空间将使这成为一个挑战。

我所熟悉的PIC16F系列 Controller 只有三个定时器,通常称为TIMER0、TIMER1和TIMER2,它们的硬件实现都有很大不同。这些定时器中的每一个都经过优化,可支持片上功能,例如捕获输入边沿事件或 PWM 生成或 SPI 时序等。

使用这些类型的 Controller ,开发人员需要根据目标 Controller 的可用资源来制作应用程序。如果您的技能与这些资源受限的 Controller 不太匹配,您应该考虑 ARM、MIPS 或 RISC-V 类 Controller 。

关于轻松更改嵌入式软件中的外设定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com