你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L476 USART3 初始化是否有BUG

[复制链接]
qhj1005 提问时间:2020-9-4 08:27 /
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();
  }
}

收藏 评论3 发布时间:2020-9-4 08:27

举报

3个回答
role_2099 回答时间:2020-9-4 10:11:02
我不认为会有什么问题,我用cubemx搞了个工程,但是我没有下载L4的库,你看看这个生成下能不能用,cubemx是5.6.1版本的

L476_UART3.zip (181.07 KB, 下载次数: 1)
回答时间:2020-9-4 14:12:24
看引脚功能,这个引脚时串口2。建议楼主仿真模式下,看看PA2的寄存器值,确定是否配置正确。
qhj1005 回答时间:2020-9-4 17:02:33
谢谢各位大神。hal库和ll库确实不应该混用,而且ll库时序需要自己控制,很容易出错。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版