亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 23|回復: 0
打印 上一主題 下一主題
收起左側

關于學習江協科技STM32入門教程中的一個問題

[復制鏈接]
跳轉到指定樓層
樓主

一:問題現象和背景描述。
對于新手學習STM32單片機的視頻教程網上一大堆,個人認為江協科技的視頻挺不錯的(這里絕不是打廣告哈),對照著視頻學習,當程序下載后功能實現正常,皆大歡喜,但也并不總是盡盡如人意,誰學習過程中沒遇到一些疑難雜癥的,但正是那些我們踩過的坑,才會讓我們更加刻骨難忘,說遠啦我們言歸正傳。
例如現在我遇到的這個問題:在做 【13-2】待機模式+RTC時鐘實驗時,程序編譯下載什么都正常,但發現和視頻演示功能不一樣,出現異常,表現為一直喚醒待機模式,OLED顯示CNT\ALR的值會同步增加。這個問題苦惱了我很久,因為我確信程序什么的都沒問題,因為它演示的功能很簡單,就是啟用RTC的鬧鐘,然后循環顯示秒計數器的值和RTC_FLAG_ALR的標志位,再進入待機模式,等到了RTC的鬧鐘的定時時間,退出待機模式重復執行,很簡單的一段邏輯。最后通過匯集各方資料發現原因在于固件庫/標準外設庫的不一致導致的,視頻用的固件庫/標準外設庫的版本 STM32F10x_StdPeriph_Lib_V3.5.0,而我采用的是 STM32F10x_StdPeriph_Lib_V3.6.0。它們內容幾乎一樣,但也有一些細微的差別,就拿本次實驗所說,區別在于 V3.5.0 PWR.C 文件中 void PWR_EnterSTANDBYMode(void) 函數比 V3.6.0 PWR.C 文件中,多了一句  /* Clear Wake-up flag */PWR->CR |= PWR_CR_CWUF; 結果導致進入待機模式后不停的喚醒,就是因為少了一句對喚醒標志位的清除,從而導致出現異常。


二:解決辦法
1:將 V3.6.0 的固件庫替換成 V3.5.0。
2:如果嫌麻煩仍使用 V3.6.0的版本,那么在調用進入待機模式的函數前面添加一句對喚醒標志位的清除的操作。


三:示例代碼如下:
  1. #include "stm32f10x.h"                  // Device header
  2. #include "Delay.h"
  3. #include "OLED.h"
  4. #include "MyRTC.h"

  5. int main(void)
  6. {        
  7.         OLED_Init();
  8.         MyRTC_Init();
  9.         
  10.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  11.         
  12.         OLED_ShowString(1, 1, "CNT :");
  13.         OLED_ShowString(2, 1, "ALR :");
  14.         OLED_ShowString(3, 1, "ALRF:");
  15.         
  16.         PWR_WakeUpPinCmd(ENABLE);
  17.         
  18.         uint32_t Alarm = RTC_GetCounter() + 10;
  19.         RTC_SetAlarm(Alarm);
  20.         OLED_ShowNum(2, 6, Alarm, 10);
  21.         
  22.         while (1)
  23.         {
  24.                 OLED_ShowNum(1, 6, RTC_GetCounter(), 10);
  25.                 OLED_ShowNum(3, 6, RTC_GetFlagStatus(RTC_FLAG_ALR), 1);
  26.                
  27.                 OLED_ShowString(4, 1, "Running");
  28.                 Delay_ms(100);
  29.                 OLED_ShowString(4, 1, "       ");
  30.                 Delay_ms(100);
  31.                
  32.                 OLED_ShowString(4, 9, "STANDBY");
  33.                 Delay_ms(1000);
  34.                 OLED_ShowString(4, 9, "       ");
  35.                 Delay_ms(100);
  36.                
  37.                 OLED_Clear();
  38.                
  39.                 /* Clear Wake-up flag */
  40.                 PWR->CR |= PWR_CR_CWUF;
  41.                 PWR_EnterSTANDBYMode();
  42.         }
  43. }
復制代碼

四:圖片對比


評分

參與人數 1黑幣 +5 收起 理由
powerdruy + 5

查看全部評分

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

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表