APT32F102 学习记录
前言
首次接触RISC-V CPU内核芯片,特作此博客记录。
芯片:APT32F1023是由爱普特微电子推出的基于RISC-V CPU内核开发的32位高性能高可靠性单片机。
一、printf 重定向
1.引入库
#include <stdio.h>
2.main.c 文件添加 fputc 函数,实现printf
// 发送数据
int fputc(int ch, FILE *f)
{
UARTTxByte (UART1,ch); //发送
return (ch);
}
二、问题
1.读取串口数据,在中断函数中使用,会导致 程序死机
(1) UART_ReturnRxByte(UART0); //中断 读取 会导致死机
/*************************************************************/
//UART0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0IntHandler(void)
{
// ISR content ...
if ((UART0->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART0->ISR=UART_RX_INT_S;
RxDataFlag = TRUE;
//char uart_data = UART_ReturnRxByte(UART0); //中断 读取 会导致死机
//uart0_rx_buff_write(uart_data);
}
else if( (UART0->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART0->ISR=UART_TX_INT_S;
TxDataFlag = TRUE;
}
else if ((UART0->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART0->ISR=UART_RX_IOV_S;
}
else if ((UART0->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART0->ISR=UART_TX_IOV_S;
}
}
/*************************************************************/
//UART RX Return Byte
//EntryParameter:UART0,UART1,UART2
//ReturnValue:(uart)->DATA
/*************************************************************/
U8_T UART_ReturnRxByte(CSP_UART_T *uart)
{
RxDataFlag = FALSE;
while(RxDataFlag != TRUE);
return CSP_UART_GET_DATA(uart);
}
(2)原因
RxDataFlag 在中断中设置 TRUE,进入 UART_ReturnRxByte(UART0) 中,又设置为FALSE,在while(RxDataFlag != TRUE); 位置,一直等待。
修改 串口接收函数 U8_T UART_ReturnRxByte(CSP_UART_T *uart)
/*************************************************************/
//UART RX Return Byte UART RX返回字节
//EntryParameter:UART0,UART1,UART2
//ReturnValue:(uart)->DATA
/*************************************************************/
U8_T UART_ReturnRxByte(CSP_UART_T *uart)
{
//RxDataFlag = FALSE;
//while(RxDataFlag != TRUE);
return CSP_UART_GET_DATA(uart);
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了APT 串口 printf 重定向 ,及串口接收函数的问题。
版权声明:本文为qq_33142783原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。