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

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM32編程小結

作者:忘語   來源:忘語   點擊數:  更新時間:2014年06月14日   【字體:
1.在主函數的正式調用里,RCC的配置一定要在各外設的函數調用之前。
 
2.外設調試出現問題時,一定先考慮是不是沒有打開外設的時鐘。并且RCC配置和外設時鐘的打開要在配置寄存器之前。
 
3.使用模塊化編程可以使程序簡單易讀,可移植性高,下一次調用方便。但是可能會出現很多問題,必須一一克服。 在主函數里,把需要用得到的各模塊配置函數調用寫入,這一點很重要。
 
4.模塊化編程時,一定要確保模塊的.c文件添加進了工程目錄,否則會出現:Undefined  Symbol的錯誤提示,這一點要牢記。
 
5.中斷服務函數必須要寫進stm32f10x.it.c里面。否則會出問題。
 
6.有時添加的模塊太多可能會調試不出來,這時考慮把GPIO的端口復用AFIO打開。
 
7.外部中斷的應用:
(1).EXTI的GPIO外部線路中斷設置;
(2).EXTI初始化配置;
(3).中斷服務函數里的寫法:(如EXTI_9_5之類)盡量單元間 各自用各自的if和else if。
互相的單元間不要用else if連接。
 ( 4 ).中斷服務函數里第一步就要清除中斷標志位。
 
8.初始化外設如果在循環里面,比如PWM配置:
  while(1)
{ TIM_Config(); }
這個時候如果不加延遲語句,很可能會出錯,加入延遲可以一定程度改善。
 
9.break語句是跳出里的最近的循環體。但是要注意,if不屬于循環體。所以一個while(1)里面只有if,一個break就讓全盤跳出while(1)!
 
10. while(1)
{
if(!Front_LDR_Signal)
{
if(a==1)
{}
else
{
a=1;
b=0;
drive(700,0,700,0);      
Delayms(80);
}
}
if(Front_LDR_Signal)
{
if(b==1)
{}
if(b==0)
{
a=0;
b=1;
drive(700,0,0,0);      
Delayms(80);
}
}
用if雙層判斷語句可以很好地避免每一次循環都要重新配置PWM,節約CPU。這個用法很好。
 
11.外部中斷函數不能進入的原因分析:
1)GPIO或者AFIO的時鐘沒有開啟;
2)GPIO和配置的中斷線路不匹配;
3)中斷觸發方式和實際不相符合;
4)中斷處理函數用庫函數時,寫錯,經常可能出現數字和字母之間沒有下劃線;
5)外部中斷是沿觸發,有可能不能檢測到沿,比如 中斷線是低電平(浮空輸入),觸發是下降沿觸發,可能會出現一直是低電平,高電平的時候是一樣的情況,電平持續為高電平;
6)沒有用軟件中斷來觸發外部中斷,調用函數EXTI_GenerateSWInterrupt;,因為軟件中斷先于邊沿中斷處理。
 
12.中斷NVIC的配置(尤其是其中的NVIC_InitStructure.NVIC_IRQChannel = EXTIx_IRQn;),絕對不可以占用輸出等功能的GPIO口通道。比如配置了NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; 那么PX2輸出PWM就會出現不可預知的問題。
關閉窗口

相關文章

主站蜘蛛池模板: 久久9999久久| 一级毛片在线播放 | 狠狠操狠狠搞 | 色狠狠一区 | 久久婷婷麻豆国产91天堂 | 国产视频福利在线观看 | 91天堂网 | 在线一区| 欧美视频 亚洲视频 | 欧美在线色 | 国产精品99999 | 黄免费在线 | 国产资源在线观看 | 日本三级全黄三级三级三级口周 | 天堂一区 | 日韩精品在线一区 | 欧美一级欧美三级在线观看 | 亚洲第一福利视频 | 中文av在线播放 | 久久99国产精品 | 天堂成人国产精品一区 | 美女久久久久久久久 | 日本一二三区在线观看 | 亚洲一区二区三区免费在线观看 | 中文字幕丁香5月 | 色爽女 | 日韩欧美国产一区二区 | 久久精品国产久精国产 | 精品久久久久久久 | 亚洲精选一区二区 | 久久久久久久久淑女av国产精品 | 狠狠色综合久久丁香婷婷 | av免费在线播放 | 国产精品精品视频一区二区三区 | 日韩一区和二区 | 在线免费观看黄色av | 亚洲精品aⅴ | 日韩久久精品电影 | 成人精品一区二区三区中文字幕 | 特级毛片 | 午夜成人免费视频 |