sdyangchd 发表于 2019-11-14 15:05:53

【关于ST马达库生成代码中UART2的疑问】

用WB生成的工程/* Initialize all configured peripherals */....
MX_USART2_UART_Init();
...
/* Initialize interrupts */
MX_NVIC_Init();



单步调试每次都能进入中断。

用cubemx只生成串口通信的工程, 必须加        __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); 才能进入中断
/* Initialize all configured peripherals */
...
MX_USART2_UART_Init();
...
/* Initialize interrupts */
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
        __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);



请问点击库生成的代码在哪儿初始化的UART2的接收中断?

mikecai 发表于 2019-11-15 08:52:17

如是裸机,可放在while loop前,如果Uart 接收加 DMA,还必须提前分配DMA buffer

sdyangchd 发表于 2019-11-15 10:10:48

mikecai 发表于 2019-11-15 08:52
如是裸机,可放在while loop前,如果Uart 接收加 DMA,还必须提前分配DMA buffer

自己生成的代码加这个是明确的。
问题是现在ST MCSDK5.x 电机库自己生成的代码,关于UART的初始化,没有找到初始化中断的地方。我的意思是感觉电机库生成的代码没有对串口的中断进行初始化,但是将代码下载后,给接收中断打断点,是可以进入中断的,所以有疑惑。

sdyangchd 发表于 2019-11-15 21:24:50

已经解决。
MX_MotorControl_Init(); --> UI_TaskInit(wConfig,NBR_OF_MOTORS,pMCI,pMCT,s_fwVer); --> MCP_Init(pMCP, (FCP_Handle_t *) & pUSART, & UFCP_Send, & UFCP_Receive, & UFCP_AbortReceive, pDAC, s_fwVer); -->MCP_WaitNextFrame(pHandle); --> pHandle->fFcpReceive(pHandle->pFCP); --> LL_USART_EnableIT_RXNE(pActualHandle->USARTx);

藏得好深。
页: [1]
查看完整版本: 【关于ST马达库生成代码中UART2的疑问】