📄 main.c
字号:
#include "systemInit.h"
#include <uart.h>
// UART初始化
void uartInit(void)
{
SysCtlPeriEnable(SYSCTL_PERIPH_UART2); // 使能UART模块
SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG); // 使能RX/TX所在的GPIO端口
GPIOPinTypeUART(GPIO_PORTG_BASE, // 配置RX/TX所在管脚为
GPIO_PIN_0 | GPIO_PIN_1); // UART收发功能
UARTConfigSet(UART2_BASE, // 配置UART端口
9600, // 波特率:9600
UART_CONFIG_WLEN_8 | // 数据位:8
UART_CONFIG_STOP_ONE | // 停止位:1
UART_CONFIG_PAR_NONE); // 校验位:无
UARTFIFOLevelSet(UART2_BASE, // 设置收发FIFO中断触发深度
UART_FIFO_TX2_8, // 发送FIFO为2/8深度(4B)
UART_FIFO_RX6_8); // 接收FIFO为6/8深度(12B)
UARTIntEnable(UART2_BASE, UART_INT_TX); // 使能发送中断
IntEnable(INT_UART2); // 使能UART总中断
IntMasterEnable(); // 使能处理器中断
UARTEnable(UART2_BASE); // 使能UART端口
}
// 通过UART发送字符串
void uartPuts(const char *s)
{
while (*s != '\0')
{
UARTCharPut(UART2_BASE, *(s++));
}
}
// 定义发送中断标志,如果出现发送中断,则置位TxIntFlag
volatile tBoolean TxIntFlag = false;
// 主函数(程序入口)
int main(void)
{
jtagWait(); // 防止JTAG失效,重要!
clockInit(); // 时钟初始化:晶振,6MHz
uartInit(); // UART初始化
for (;;)
{
uartPuts("0123456789ABCDEF"); // 一次性填满FIFO
SysCtlDelay(11 * (TheSysClock / 3000)); // 延迟11ms以内不会产生中断
// 延迟12ms以上就会产生中断
if (TxIntFlag)
{
TxIntFlag = false; // 在这里设置观察断点
}
}
}
// UART2中断服务函数
void UART2_ISR(void)
{
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART2_BASE, true); // 读取当前中断状态
UARTIntClear(UART2_BASE, ulStatus); // 清除中断状态
if (ulStatus & UART_INT_TX) // 若是发送中断
{
TxIntFlag = true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -