串口是调试设备,打印运行信息常用的工具
初始化串口的代码可以参考例程,也可以自行在sci.h文件中找要使用的函数,毕竟大部分MCU初始化串口的步骤都是通用的
> static inline void SCI_enableModule(uint32_t base);
static inline void SCI_disableModule(uint32_t base);
static inline void SCI_enableTxModule(uint32_t base);
static inline void SCI_disableTxModule(uint32_t base);
static inline void SCI_enableRxModule(uint32_t base);
static inline void SCI_disableRxModule(uint32_t base);
static inline void SCI_enableFIFO(uint32_t base);
static inline void SCI_disableFIFO(uint32_t base);
static inline void SCI_resetChannels(uint32_t base);
static inline SCI_TxFIFOLevel SCI_getTxFIFOStatus(uint32_t base);
static inline SCI_RxFIFOLevel SCI_getRxFIFOStatus(uint32_t base);
static inline void SCI_writeCharBlockingFIFO(uint32_t base, uint8_t data);
static inline void SCI_writeCharBlockingNonFIFO(uint32_t base, uint8_t data);
static inline void SCI_writeCharNonBlocking(uint32_t base, uint8_t data);
static inline uint16_t SCI_getRxStatus(uint32_t base);
static inline uint16_t SCI_readCharBlockingFIFO(uint32_t base);
static inline uint16_t SCI_readCharBlockingNonFIFO(uint32_t base);
static inline uint16_t SCI_readCharNonBlocking(uint32_t base);
static inline void SCI_performSoftwareReset(uint32_t base);
void SCI_setConfig(uint32_t base, uint32_t lspclkHz, uint32_t baud, uint32_t config);
void SCI_writeCharArray(uint32_t base, constuint8_t *const array, uint16_t length);
void SCI_readCharArray(uint32_t base, uint8_t *const array, uint16_t length);
void SCI_enableInterrupt(uint32_t base, uint32_t intFlags)
void SCI_disableInterrupt(uint32_t base, uint32_t intFlags);
uint32_t SCI_getInterruptStatus(uint32_t base);
void SCI_clearInterruptStatus(uint32_t base, uint32_t intFlags);
这里sci自带fifo,除此外,函数里还有关于阻塞和非阻塞写入和读取的,我个人认为这些函数挺有用的。
对cortex-m内核芯片库函数比较熟悉的人来说,使用这些库函数也不难,可以去代码里注释看下具体用法
除此之外官方还有个库函数系列文档网站

不过里面关于SCI和一些其他外设的还没有完善,希望官方尽快完善。

首先要确定UART引脚,以及使用哪个SCI
去原理图上找到JATG接口中对应的串口引脚
其中GPIO12和GPIO13就是串口引脚

去数据手册中找这两个引脚,发现对应SCIB,那代码中对应的外设就是SCIB

应用部分参考官方例程
voidsci_uart_init(uint32_t baudRate)
{
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_SCIB);
GPIO_setDirectionMode(13, GPIO_DIR_MODE_IN);
GPIO_MuxConfig(13, GPIO_13_SCIB_RX, GPIO_PIN_TYPE_STD, GPIO_QUAL_ASYNC);
GPIO_setDirectionMode(12, GPIO_DIR_MODE_OUT);
GPIO_MuxConfig(12, GPIO_12_SCIB_TX, GPIO_PIN_TYPE_STD, GPIO_QUAL_ASYNC);
SCI_performSoftwareReset(SCIB_BASE);
SCI_setConfig(SCIB_BASE, DEVICE_LSPCLK_FREQ, baudRate,
(SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE | SCI_CONFIG_PAR_NONE));
SCI_resetChannels(SCIB_BASE);
SCI_resetRxFIFO(SCIB_BASE);
SCI_resetTxFIFO(SCIB_BASE);
SCI_enableFIFO(SCIB_BASE);
SCI_enableModule(SCIB_BASE);
SCI_performSoftwareReset(SCIB_BASE);
}
intmain(void) {
char *array;
uint16_t readchar;
Device_init();
Interrupt_initVectorTable();
sci_uart_init(115200U);
array = (unsignedchar *)"\r\n\n\nHello World!\0";
SCI_writeCharArray(SCIB_BASE, array, strlen(array));
array = (unsignedchar *)"\r\nYou will enter a character, and the DSP will echo it back!\n\0";
SCI_writeCharArray(SCIB_BASE, array, strlen(array));
while(1) {
array = (unsignedchar *)"\r\nEnter a character: \0";
SCI_writeCharArray(SCIB_BASE, array, strlen(array));
readchar = SCI_readCharBlockingFIFO(SCIB_BASE);
array = (unsignedchar *) " You sent: \0";
SCI_writeCharArray(SCIB_BASE, array, strlen(array));
SCI_writeCharBlockingFIFO(SCIB_BASE, readchar);
}
}
有一点值得一说,IDE里自带串口助手,这样调试起来就方便多了


