YTM32B1MD1 Uart中断接收DEMO修改的程序会进入DefaultISR ,用官方DEMO配置也是一样的
-
#include "sdk_project_config.h"
/* Includes ------------------------------------------------------------------*//* Private includes ----------------------------------------------------------/
/ USER CODE BEGIN Includes /
/ USER CODE END Includes *//* Private typedef -----------------------------------------------------------/
/ USER CODE BEGIN PTD /
/ USER CODE END PTD *//* Private define ------------------------------------------------------------/
/ USER CODE BEGIN PD /
#define UART_TX_RX_SIZE (8)
#define INST_UART (0)
/ USER CODE END PD *//* Private macro -------------------------------------------------------------/
/ USER CODE BEGIN PM /
/ USER CODE END PM *//* Private variables ---------------------------------------------------------/
/ USER CODE BEGIN PV /
uint8_t g_RecData[UART_TX_RX_SIZE];
volatile bool g_rxComplete = false;
volatile bool g_txComplete = false;
/ USER CODE END PV *//* Private function declare --------------------------------------------------/
/ USER CODE BEGIN PFDC /
/ USER CODE END PFDC */
static void Board_Init(void);/* Private user code ---------------------------------------------------------/
/ USER CODE BEGIN 0 /
/ Uart rx callback function */
void Uart_RxCallback(void *LINFLexDState, uart_event_t event, void *userData)
{
(void)LINFLexDState;
(void)userData;
if (event == UART_EVENT_END_TRANSFER)
{
g_rxComplete = true;
}
}/* Uart tx callback function */
void Uart_TxCallback(void *LINFLexDState, uart_event_t event, void *userData)
{
(void)LINFLexDState;
(void)userData;
if (event == UART_EVENT_END_TRANSFER)
{
g_txComplete = true;
}
}/* USER CODE END 0 */
/**
-
@brief The application entry point.
-
@retval int
/
int main(void)
{
/ USER CODE BEGIN 1 /
status_t status = STATUS_SUCCESS;
/ USER CODE END 1 /
Board_Init();
/ USER CODE BEGIN 2 */
PRINTF("Build %s %s\r\n", DATE, TIME);
PRINTF("Linflexd Uart Interrupt Demo!\r\n");LINFlexD_UART_DRV_InstallRxCallback(INST_UART, Uart_RxCallback, NULL);
LINFlexD_UART_DRV_InstallTxCallback(INST_UART, Uart_TxCallback, NULL);
/* USER CODE END 2 *//* Infinite loop /
/ USER CODE BEGIN WHILE */
while (1)
{status |= LINFlexD_UART_DRV_ReceiveData(INST_UART, g_RecData, UART_TX_RX_SIZE); PRINTF("\r\n g_RecData: %c",g_RecData); /* Wait for reception to complete */ // while (!g_rxComplete) // ; /* Send received data */ // status |= LINFlexD_UART_DRV_SendData(INST_UART, g_RecData, UART_TX_RX_SIZE); /* Wait for sending to complete */ // while (!g_txComplete) // ; // PRINTF("\r\n g_RecData: %c",g_RecData);
// g_txComplete = false;
// g_rxComplete = false;if (status != STATUS_SUCCESS) { //break; } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
static void Board_Init(void)
{
CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
UTILITY_PRINT_Init();
}/* USER CODE BEGIN 4 /
/ USER CODE END 4 */
程序跑到箭头所指的地方就进入了DefaultISRLinflexd_Uart_Interrupt_Demo.yct yct配置工程已经提交
-
-
run #include "sdk_project_config.h"
/* Includes ------------------------------------------------------------------*//* Private includes ----------------------------------------------------------/
/ USER CODE BEGIN Includes /
/ USER CODE END Includes *//* Private typedef -----------------------------------------------------------/
/ USER CODE BEGIN PTD /
/ USER CODE END PTD *//* Private define ------------------------------------------------------------/
/ USER CODE BEGIN PD /
#define UART_TX_RX_SIZE (8)
#define INST_UART (0)
/ USER CODE END PD *//* Private macro -------------------------------------------------------------/
/ USER CODE BEGIN PM /
/ USER CODE END PM *//* Private variables ---------------------------------------------------------/
/ USER CODE BEGIN PV */
uint8_t g_RecData[UART_TX_RX_SIZE];#define UART_RX_LENGTH (20)
volatile bool g_rxComplete = false;
volatile bool g_txComplete = false;
uint8_t g_uartRxBuffer[UART_RX_LENGTH] = { 0 };
/* USER CODE END PV *//* Private function declare --------------------------------------------------/
/ USER CODE BEGIN PFDC /
/ USER CODE END PFDC */
static void Board_Init(void);/* Private user code ---------------------------------------------------------/
/ USER CODE BEGIN 0 /
/ Uart rx callback function */
void uart_RX_Callback(void *uartState, uart_event_t event, void userData)
{
(void)userData;
(void)uartState;
if (UART_EVENT_END_TRANSFER == event)
{
/ Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. /
PRINTF("Data Received: ");
for (int i = 0; i < UART_RX_LENGTH; i++)
{
PRINTF("%x ", g_uartRxBuffer[i]);
}
PRINTF("\n\r");
}
else if (UART_EVENT_ERROR == event)
{
/ error happened */
}
}void uart_TX_Callback(void *uartState, uart_event_t event, void userData)
{
(void)userData;
(void)uartState;
if (UART_EVENT_END_TRANSFER == event)
{
/ Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. */
PRINTF("Data sent.\n");
}
}/* USER CODE END 0 */
/**
-
@brief The application entry point.
-
@retval int
/
int main(void)
{
/ USER CODE BEGIN 1 /
status_t status = STATUS_SUCCESS;
/ USER CODE END 1 /
Board_Init();
/ USER CODE BEGIN 2 */
PRINTF("Build %s %s\r\n", DATE, TIME);
PRINTF("Linflexd Uart Interrupt Demo!\r\n");LINFlexD_UART_DRV_InstallRxCallback(INST_UART, uart_RX_Callback, NULL);
LINFlexD_UART_DRV_InstallTxCallback(INST_UART, uart_TX_Callback, NULL);
/* USER CODE END 2 *//* Infinite loop /
/ USER CODE BEGIN WHILE */
while (1)
{status |= LINFlexD_UART_DRV_ReceiveData(INST_UART, g_RecData, UART_TX_RX_SIZE); //PRINTF("\r\n g_RecData: %c",g_RecData); /* Wait for reception to complete */ // while (!g_rxComplete) // ; /* Send received data */ // status |= LINFlexD_UART_DRV_SendData(INST_UART, g_RecData, UART_TX_RX_SIZE); /* Wait for sending to complete */ // while (!g_txComplete) // ; // PRINTF("\r\n g_RecData: %c",g_RecData);
// g_txComplete = false;
// g_rxComplete = false;if (status != STATUS_SUCCESS) { //break; } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
static void Board_Init(void)
{
CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
UTILITY_PRINT_Init();
LINFlexD_UART_DRV_Init(0, &linflexd_uart_config0_State, &linflexd_uart_config0);
}
程序正常跑起来的,没有进入DefaultISR了,串口是有发送数据的,用逻辑分析仪是能看到的,但是就是接收不到,麻烦帮我看看我的YCT和代码,哪个地方配置错了,谢谢Linflexd_Uart_Interrupt_Demo.yct -
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...