主题中讨论的其他器件:TM4C1294NCPDT、
我正在参加 Tiva C 系列连接 LaunchPad 技术讲座 、这是我对微控制器编程的首次介绍(尽管我已经了解 C 语言和更高级别的语言)。
在大多数情况下、该教程非常好地向我展示了我需要了解的信息。 但是、我发现建议的"家庭作业想法"(例如、在 Lab03和 Lab05的末尾)是不可能的。 在本问题中、我将重点介绍 Lab05"中断和计时器"家庭作业的想法。
为方便起见、我在此复制了描述:
家庭作业思想:研究通用定时器的脉宽调制功能。 对计时器进行编程、使其使您的眼睛能够看到的 LED 主器闪烁、通常频率高于30Hz、并使用脉冲宽度来改变视在强度。 编写一个循环、使强度定期变化。
此外、为方便起见、我在该帖子的末尾添加了 Lab05中的"main.c"。
我的问题如下:是要求我通过 TIMER_CFG_A_PWM 等配置来调查 PWM 功能、还是只需添加第二个周期性计时器来计算占空比并激活中断? 后者(几乎)对我来说微不足道,但问题的措辞使我认为他们打算采用前者。 如果是前者,我希望在这方面得到一些帮助,因为迄今为止我为理解文件所做的一切努力都是徒劳的。 (实际上、如果是后者、我也会喜欢有关我的实施情况的一些反馈、我可以分享这些反馈。)
谢谢!
-一个新手
Lab05的"main.c"
#include
#include
#include "inc/tm4c1294ncppdt.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/syssctl.h"#include "driverlib/interrupt.h
(sys_rtc
)#include "sysclipt_iptl (sys_ipt_rtf);sys_ipt_iptl (sys_ipt_rtf) GPIO_PIN_0|GPIO_PIN_1);
TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODIY);
ui32Period = ui32SysClkFreq/2;
TimerLoadSet (TIMER0_BASE、 Timer_A、ui32Period -1);
IntEnable (INT_TIMER0A);
TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
IntMasterEnable();
TimerEnable (TIMER0_BASE、TIMER_A);
while (1)
{
}
void Timer0IntHandler (void)
{
//清除计时器中断
TimerIntClear (TIMER0_BASE、TIMER_TIMA_TIMEOUT);
//读取 GPIO 引脚的当前状态,//
写回对面的 TimerIntClear (TIMER0_BASE)
、GPIO_PINT_GPIO1
(GPIO_REBASE)
;}GPIO_PINT_GPIO1 (GPIO_PINT_GPIO_1)
(请注意、"tm4c1294ncpdt_startup_ccs.c"也被编辑以包含"Timer0IntHandler"、此处并未显示。)