2016-01-15 07:04 AM
Hi,
first to say that I'm beginner with STM32 programming, I study this uC entire month. I'm using board based on this http://www.mikroe.com/mini/stm32/ and I have limited (or no) support from manufacturer. I created Keil project with STM32CubeMX app, and attached everything in ser3.zip (excluded folder Drivers) I noticed that UART4 and USART1 are initialized (only on UART4 I have DE-9 connector), and in while loop I call: HAL_UART_Transmit_IT(&huart4, ''COM1\r\n'', 6); but nothing arrives on my serial port (only first attempt return HAL_OK, other some error, didn't determined what exactly) I compared mine project with this https://github.com/fboris/STM32Cube_FW_F4/blob/master/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_IT/Src/main.c but couldn't find some differences. Can someone check, did I missed something in STM32CubeMX, or something in main() ?? Some short notice about ports and devices attached on MINI-M4: PC12,PC13,PA14 == LED PC11,PC10 == UART4 Rx and Tx (with DE-9 connector) PB7,PB6 == USART1 Rx and Tx (no output) Tx2016-01-15 07:51 AM
I have limited (or no) support from manufacturer.
It's pretty limited here too.2016-01-15 01:57 PM
I know that, but this is forum what use people who already work with this uC.
All I ask to someone see main function, and STM32CubeMX project I attached.Maybe I made there some error.2016-01-16 03:53 AM
Hi Ivan. As i can remember MxCube make generates initialization function for interface(in your case - USART) controller - not for the gpios, - you need do it by yourself: configure the needed pins with alternate function selection, output mode, speed...etc. So i think you have silent pins because they are simpy not configured yet. Also check clock selection, and maybe you need enable clocking of usart manually. Btw - the error (when you check return value from rx\tx func) that you toke - can be referenced to this case(not conf. gpios)
2016-01-18 04:23 AM
It looks to me like it generated GPIOS
here's the code: void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==UART4) { /* USER CODE BEGIN UART4_MspInit 0 */ /* USER CODE END UART4_MspInit 0 */ /* Peripheral clock enable */ __UART4_CLK_ENABLE(); /**UART4 GPIO Configuration PC10 ------> UART4_TX PC11 ------> UART4_RX */ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF8_UART4; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* USER CODE BEGIN UART4_MspInit 1 */ /* USER CODE END UART4_MspInit 1 */ } else if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __USART1_CLK_ENABLE(); /**USART1 GPIO Configuration PB6 ------> USART1_TX PB7 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ } } Anyway, I detected error codes: after first ''successfull'' (but without output on putty) HAL_UART_Transmit_IT returns HAL_BUSY and HAL_UART_GetState returns HAL_UART_STATE_BUSY_TX Any idea?