
STM32L476RGT6用MX生成USART3和PA2的工程。USART3用的PC4和PC5。测试USART3读写数据都正常。有问题的现象是:只要对USART3进行了初始化,PA2就不能正确读取端口状态。现在PA2外部悬空,内部下拉,应读到是0,但是有USART3初始化这一步,读到的就是1。PA2换到PC13现象一样。USART3用HAL库或是LL库也不行。把USART3初始化改成对usart1初始化(用的PA9和PA10),PA2读取输入的状态就正常了。现在是板子已做好,请大家帮忙分析分析问题出在哪里? int main(void) { uint8_t PA2_statuas=0; HAL_Init(); SystemClock_Config(); MX_USART3_UART_Init(); MX_GPIO_Init(); /*设PA2 Input,HAL库和LL库都试过*/ LL_GPIO_SetPinMode(GPIOA, GPIO_PIN_2, LL_GPIO_MODE_INPUT); LL_GPIO_SetPinPull(GPIOA, GPIO_PIN_2, LL_GPIO_PULL_DOWN); PA2_statuas=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2); if(PA2_statuas==0) { LL_mDelay(100); } if(PA2_statuas==1) { LL_mDelay(200); } void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 57600; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart3) != HAL_OK) { Error_Handler(); } } |
我不认为会有什么问题,我用cubemx搞了个工程,但是我没有下载L4的库,你看看这个生成下能不能用,cubemx是5.6.1版本的![]() |
看引脚功能,这个引脚时串口2。建议楼主仿真模式下,看看PA2的寄存器值,确定是否配置正确。 |
谢谢各位大神。hal库和ll库确实不应该混用,而且ll库时序需要自己控制,很容易出错。 |
请问大佬们,L433进入stop2模式还有874uA的电流,有什么排查的办法吗?
ST25R3916有快速读取吗?
STM32L476 Flash擦除失败问题
STM32L562-DK板中居然有个电流测量模块
STM32L433 单片机在串口配置为IRDA模式后,IRDA是否可以在STOP Mode1下唤醒
各位大佬们多提提宝贵建议定位根本原因,跪谢。STM32L452 在未知情况下打开了读保护RDP?MCU无法运行,只有解除读保护后重新烧录固件
VDD下电后使用VBAT引脚供电时LSE停振?
关于stm32l431rct6的LPTIM计数模式
STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替换到板子上吗?为啥烧录程序时无法连接?
使用STM32L451CEU6型号的芯片,在用usart(PA9、PA10)进行串口通信时,发送0x55在PC端可以收到正确的数据,但是发送0x80会收到0x00的数据,发送0x01会收到0x7F的数据,串口助手的配置和CubeMX上的配置参数是一样的(都是115200,8N1),请问各位这个是什么原因呀?