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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版