主题中讨论的其他器件:Energia、 TM4C123
大家好、我正在尝试学习计时器。 我在互联网上看到了一个示例代码、并对照数据表检查了它、为配置选择的值看起来不错。
预期结果: 1秒红色 LED 亮起、1秒 LED 熄灭
实际结果:0.5秒红色 LED 亮起、0.5秒 LED 熄灭
这是我构建并加载到 TM4C 的代码。 代码是在 Keil uVISION 上开发的。 从“管理运行时环境”中,选择 CMSIS->Core and Device->Startup 软件组件。
#include "TM4C123.h" //器件标头
void delay_microsecond (uint32_t time);
int main ()
{
sysctl->RCGCGPIO |= 0x20; //解锁端口 F
GPIOF->DIR = 0x02; //将 PF1 (红色) LED 引脚设置为输出
GPIOF->DEN = 0x02; //数字使能 PF1 (红色) LED
while (1)
{
delay_microsecond (1000000);//等待1秒
GPIOF->data ^= 0x02; //切换 PF1的输出值
(红色 LED)}
void delay_microsecond (uint32_t time)
{
sysctl->RCGCTIMER |= 0x02;//启用 Timer1
Timer1->CTL = 0x00并提供时钟; // Timer 1-A 被禁用。
Timer1->CFG = 0x04; //选择16位定时器
Timer1->TAMR = 0x2; //设置周期定时器模式
Timer1->TAILR = 16 - 1; // 0到15 = 1微秒
Timer1->ICR = 0x1的16个周期; //清除 Timer1中的中断(此处不需要?)
Timer1->CTL = 0x01; //为
(int i = 0;i <时间;i++){启用计时器1A
while ((Timer1->RIS & 0x1)=0x00);
Timer1->ICR = 0x1; //每16个节拍清除计时器1A 中断
}