久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 822|回復: 0
打印 上一主題 下一主題
收起左側(cè)

STM32L431在STOP2模式下能否將串口的RX配置成EXTI喚醒呢?為什么我的喚醒不了呢?...

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:916493 發(fā)表于 2024-10-31 16:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32L431在STOP2模式下能否將串口的RX配置成EXTI喚醒呢?為什么我的喚醒不了呢?并且空閑中斷也不能用,手冊中說在硬件上已經(jīng)將EXTI與RX引腳連到一塊了,但是呢STOP2模式不能將串口喚醒,所以它的那種方式好像不能使用,只能用最原始的將RX配置成EXTI的方式了,但是也還是喚醒不了
進入STOP2模式,
  1. void EnterStop2ModeRTC(void) // 自定義的Enter函數(shù)
  2. {
  3.   __HAL_RCC_PWR_CLK_ENABLE();
  4.   __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
  5.   __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);
  6.   __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
  7.   __HAL_RTC_TIMESTAMP_CLEAR_FLAG(&hrtc, RTC_FLAG_TSF);
  8.   __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG();
  9.   while (__HAL_UART_GET_FLAG(&huart3, USART_ISR_BUSY) == SET)
  10.     ;
  11.   while (__HAL_UART_GET_FLAG(&huart3, USART_ISR_REACK) == RESET)
  12.     ;
  13.   setUca3RxToExti();//配置串口3的RX為EXTI
  14.   HAL_SuspendTick();
  15.   //HAL_DBGMCU_EnableDBGStopMode();
  16.   __HAL_RCC_PWR_CLK_ENABLE();
  17.   HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI); // 進入STOP2模式
  18. }
復制代碼
退出STOP2
  1. void ExitStop2ModeRTC(void)
  2. {
  3.   SystemClock_Config();
  4.   HAL_ResumeTick();
  5.   SCB->SCR &= ~SCB_SCR_SLEEPONEXIT_Msk;
  6. }
復制代碼
主函數(shù)
  1. while (1)
  2.   {
  3.     while (getExitLPM3())
  4.     {
  5.       saveData();
  6.       lcdActionPro(); // lcd進程
  7.       keyActPro();
  8.       // if (uart[_COM3].active)
  9.       // {
  10.       // }
  11.       }
  12.     }
  13.     EnterStop2ModeRTC();
  14.   }
復制代碼
在函數(shù)getExitLPM3()中,判斷了一個標志位是否被置位,如果置位了就進入里面的while
EXTI回調(diào)函數(shù):
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  2. {
  3.   if ((GPIO_Pin == GPIO_PIN_5))
  4.   {
  5.     ExitStop2ModeRTC();
  6.     HAL_NVIC_DisableIRQ(EXTI9_5_IRQn);
  7.     setUca3RxToRx();
  8.     // uart[_COM3].active = true;
  9.   }
  10. }
復制代碼
在EXTI的回調(diào)函數(shù)中退出了STOP2模式并重新將串口RX引腳配置為接收引腳
  1. void setUca3RxToExti(void)
  2. {
  3.   GPIO_InitTypeDef GPIO_InitStruct;
  4.   GPIO_InitStruct.Pin = GPIO_PIN_5;
  5.   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  6.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  7.   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  8.   HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
  9.   HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
  10.   uart[_COM3].active = false;
  11. }

  12. void setUca3RxToRx(void)
  13. {
  14.   GPIO_InitTypeDef GPIO_InitStruct;
  15.   GPIO_InitStruct.Pin = GPIO_PIN_5;
  16.   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  17.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  18.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  19.   GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
  20.   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  21.   // // HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
  22.   // // HAL_NVIC_EnableIRQ(USART3_IRQn);
  23.   __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
  24.   // __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE | UART_IT_IDLE);
  25. }
復制代碼
串口中斷
  1. void USER_USART3_IRQHandler(void)
  2. {
  3.   uint8_t data = 0;
  4.   if (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_RXNE) != RESET)
  5.   {
  6.     data = (uint8_t)huart3.Instance->RDR;
  7.     wrEleQueue(&uart[_COM3].Rx, data);
  8.     // uart[_COM3].active = true;
  9.     // bleAppConfig.rxAct = 1;
  10.     // bleAppConfig.tmrResp = bleAppConfig.tmrRxHold = HAL_LPTIM_ReadCounter(&hlptim1);
  11.     // __HAL_UART_CLEAR_FLAG(&huart3, UART_FLAG_RXNE);
  12.   }
  13.   // if (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_IDLE))
  14.   // {
  15.   //   // uart[_COM3].flag = 1;
  16.   //   uart[_COM3].active = false;
  17.   //   __HAL_UART_CLEAR_IDLEFLAG(&huart3);
  18.   // }
  19. }
復制代碼
中間好像邏輯有點問題,但是我想不明白了哈哈,就是那個標志位被置位true后就會一直在內(nèi)層的while中循環(huán),出不來了,就進不去STOP2了,但是不知道在哪將它給置為false,本來想使用IDLE空閑中斷的,但是空閑中斷使用后收不到數(shù)據(jù),現(xiàn)在不使用的時候第一包數(shù)據(jù)永遠都是錯誤的,有沒有大佬能幫忙看一下,謝謝大家

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视视频在线观看入口直接观看 | 精品亚洲一区二区三区四区五区高 | 91 在线| 亚洲精品亚洲人成人网 | 欧美精品久久 | 中国一级特黄真人毛片免费观看 | 玖玖免费 | 台湾a级理论片在线观看 | 中文字幕精品视频 | 伊人精品在线视频 | 国产高清av免费观看 | 久久久国产精品一区 | 91电影在线 | av国产精品毛片一区二区小说 | 国产激情在线 | 又黄又爽的网站 | 午夜电影网站 | 欧美黄色精品 | 亚洲a网 | 欧美专区在线 | 亚洲高清视频在线观看 | 蜜月aⅴ国产精品 | 国产91精品久久久久久久网曝门 | 日本欧美在线视频 | 中文字幕一区二区三区乱码在线 | 亚洲精品国产成人 | 精品区| 五月综合久久 | 国产精品一区二区三区四区 | 成人性生交大片免费看中文带字幕 | 久久久精品一区二区三区四季av | 在线观看免费黄色片 | 亚洲国产精品91 | 老司机免费视频 | 日韩在线播放第一页 | 91在线精品一区二区 | 九九久久精品视频 | 欧美精品v国产精品v日韩精品 | 欧美日韩一区在线观看 | 男女羞羞视频在线看 | 1区2区视频 |