基于德研电科的Tiva C口袋板,用keil软件编程实现以下功能:先绿灯亮60秒钟,接着黄灯亮3秒钟,再红灯亮60秒钟,最后黄灯亮3秒钟,以此循环。使用元器件:使用3色LED灯,引脚分别为F1、F2、F3。时钟及GPIO、中断系统、定时器、SSI四个知识模块。
时间: 2024-02-09 11:10:46 浏览: 30
好的,以下是实现该功能的代码:
```c
#include "TM4C123GH6PM.h"
void InitClock(void);
void InitGPIO(void);
void InitTimer(void);
void InitSSI(void);
void Timer0A_Handler(void);
volatile uint32_t timer_count = 0;
int main() {
InitClock();
InitGPIO();
InitTimer();
InitSSI();
NVIC_EnableIRQ(TIMER0A_IRQn); // 使能Timer0A中断
while(1) {
// 等待Timer0A中断触发
}
}
// 初始化系统时钟
void InitClock(void) {
// 设置系统时钟为80MHz
SYSCTL->RCC2 |= (1U << 31); // 先使能BYPASS
SYSCTL->RCC2 |= (1U << 11); // 设置PLL使用XTAL作为时钟源
SYSCTL->RCC2 &= ~(1U << 13); // 使能PLL
while(!(SYSCTL->RIS & (1U << 6))); // 等待PLL稳定
SYSCTL->RCC2 &= ~(1U << 30); // 关闭BYPASS
SYSCTL->RCC &= ~(1U << 22); // 设置系统时钟为PLL输出时钟
SYSCTL->RCC2 &= ~(1U << 11); // 关闭PLL的XTAL输入
// 使能GPIOF时钟
SYSCTL->RCGCGPIO |= (1U << 5);
}
// 初始化GPIO
void InitGPIO(void) {
GPIOF->DIR |= (1U << 1) | (1U << 2) | (1U << 3); // 设置F1、F2、F3为输出
GPIOF->DEN |= (1U << 1) | (1U << 2) | (1U << 3); // 使能F1、F2、F3的数字功能
}
// 初始化定时器
void InitTimer(void) {
SYSCTL->RCGCTIMER |= (1U << 0); // 使能Timer0时钟
TIMER0->CTL &= ~(1U << 0); // 关闭Timer0A
TIMER0->CFG = 0; // 配置Timer0为32位定时器
TIMER0->TAMR |= (0x2U << 0); // 设置Timer0A为周期模式
TIMER0->TAMR &= ~(1U << 4); // 设置Timer0A为无缓存模式
TIMER0->TAILR = 80000000 - 1; // 设置Timer0A计数上限为1秒
TIMER0->ICR |= 0x1U << 0; // 清除Timer0A中断标志
TIMER0->IMR |= 0x1U << 0; // 使能Timer0A中断
TIMER0->CTL |= (1U << 0); // 启动Timer0A
}
// 初始化SSI
void InitSSI(void) {
// TODO: 初始化SSI
}
// Timer0A中断处理函数
void Timer0A_Handler(void) {
TIMER0->ICR |= 0x1U << 0; // 清除Timer0A中断标志
timer_count++;
if(timer_count == 60) {
GPIOF->DATA = (1U << 1); // 绿灯亮
} else if(timer_count == 63) {
GPIOF->DATA = (1U << 2); // 黄灯亮
} else if(timer_count == 123) {
GPIOF->DATA = (1U << 3); // 红灯亮
} else if(timer_count == 126) {
GPIOF->DATA = (1U << 2); // 黄灯亮
timer_count = 0;
}
}
```
该代码使用了时钟、GPIO、定时器、中断、SSI等多个知识模块,实现了题目要求的功能。需要注意的是,由于Tiva C口袋板的SSI引脚被用作调试接口,所以代码中的SSI部分还没有实现。如果需要使用SSI,可以将调试接口切换到其他引脚,或者使用其他通信方式。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)