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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5778|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

stm32求助,while為何不能循環(huán)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:135253 發(fā)表于 2017-11-4 09:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近看看stm32,感覺麻煩多了,時(shí)鐘配置與端口配置,還是不得其法,下面是參考的一段主程序,

個(gè)人認(rèn)為應(yīng)該是PA.2  PA.3閃爍的,結(jié)果調(diào)試看IO口,一直是PA.3=1 PA.2=0,似乎while只運(yùn)行一次就停止了,不知道為什么原因,新手,請(qǐng)大神指教!

  1. /* 頭文件    ------------------------------------------------------------------*/

  2. #include "stm32f10x_lib.h"
  3. #define delay(n)    while((n)--)

  4. void RCC_Configuration(void);      //RCC(Reset and Clock Control group)復(fù)位與時(shí)鐘控制寄存器組,七個(gè)組員,
  5. void GPIO_Configuration(void);     //端口配置

  6. int main(void)
  7. {   
  8.           vu32 n=2000000;          /* 設(shè)置延時(shí)參數(shù) 2000000=0.25s */
  9.           RCC_Configuration();        /* 設(shè)置系統(tǒng)時(shí)鐘 */                        
  10.           GPIO_Configuration();    /* 設(shè)置GPIO端口 */
  11.                  
  12.         while(1)
  13.      {
  14.           GPIO_SetBits(GPIOA , GPIO_Pin_2);            // PA.2輸出高電平
  15.           GPIO_ResetBits(GPIOA , GPIO_Pin_3);             // PA.3輸出低電平         
  16.           delay(n);
  17.          
  18.           GPIO_ResetBits(GPIOA , GPIO_Pin_2);          // PA.2輸出低電平
  19.           GPIO_SetBits(GPIOA , GPIO_Pin_3);                     // PA.3輸出高電平
  20.           delay(n);
  21.      }
  22. }

  23. /*******************************************************************************
  24. * 函數(shù)名        : RCC_Configuration
  25. * 函數(shù)描述  : 設(shè)置系統(tǒng)各部分時(shí)鐘
  26. * 過程      :1
  27. *******************************************************************************/

  28. void RCC_Configuration(void)
  29. {
  30.       
  31.         ErrorStatus HSEStartUpStatus;                     /* 定義枚舉類型變量HSEStartUpStatus,檢測外部高速時(shí)鐘HSE啟動(dòng)狀況*/
  32.          
  33.           RCC_DeInit();                                     /* 復(fù)位系統(tǒng)時(shí)鐘設(shè)置*/
  34.       
  35.           RCC_HSEConfig(RCC_HSE_ON);                        /* 開啟HSE*/         
  36.           HSEStartUpStatus = RCC_WaitForHSEStartUp();       /* 等待HSE起振并穩(wěn)定*/
  37.       
  38.       
  39.           if(HSEStartUpStatus == SUCCESS)                   /* 判斷HSE起是否振成功,是則進(jìn)入if()內(nèi)部 */
  40.           {         
  41.           RCC_HCLKConfig(RCC_SYSCLK_Div1);             /* 選擇HCLK(AHB)時(shí)鐘源 為SYSCLK 1分頻 */   
  42.           RCC_PCLK2Config(RCC_HCLK_Div1);                 /* 選擇PCLK2(APB2)時(shí)鐘源---為HCLK(AHB)1分頻 */   
  43.           RCC_PCLK1Config(RCC_HCLK_Div2);                 /* 選擇PCLK1(APB1)時(shí)鐘源---為HCLK(AHB)2分頻 */

  44.          
  45.           FLASH_SetLatency(FLASH_Latency_2);                     /* 設(shè)置FLASH延時(shí)周期數(shù)為2 */           
  46.           FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  /* 使能FLASH預(yù)取緩存 */

  47.          
  48.           RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);   /* 選擇鎖相環(huán)(PLL)時(shí)鐘源---為HSE1分頻,倍頻數(shù)為9,則PLL輸出頻率為 8MHz * 9 = 72MHz */           
  49.           RCC_PLLCmd(ENABLE);                                    /* 使能PLL */   
  50.           while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);        /* 等待PLL輸出穩(wěn)定 */   
  51.           RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);             /* 選擇SYSCLK時(shí)鐘源為PLL */        
  52.           while(RCC_GetSYSCLKSource() != 0x08);                  /* 等待PLL成為SYSCLK時(shí)鐘源 */
  53.           }
  54.    
  55.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);/* 打開APB2總線上的GPIOA時(shí)鐘*/
  56. }


  57. /*******************************************************************************
  58. * 函數(shù)名                  : GPIO_Configuration
  59. * 函數(shù)描述            : 設(shè)置各GPIO端口功能
  60. * 輸入?yún)?shù)      : 無
  61. * 輸出結(jié)果      : 無
  62. * 返回值        : 無
  63. *******************************************************************************/

  64. void GPIO_Configuration(void)
  65. {
  66.           GPIO_InitTypeDef GPIO_InitStructure;

  67.           /* 設(shè)置PA2,PA3口為推挽輸出,最大翻轉(zhuǎn)頻率為50MHz*/
  68.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
  69.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  70.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  71.      
  72.           GPIO_Init(GPIOA , &GPIO_InitStructure);   
  73. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:135253 發(fā)表于 2017-11-4 10:01 | 只看該作者
有些注釋語句是自己加的,可能顯得很不專業(yè)
回復(fù)

使用道具 舉報(bào)

板凳
ID:225243 發(fā)表于 2017-11-4 11:15 | 只看該作者
你debug一下就知道問題處在那里了
回復(fù)

使用道具 舉報(bào)

地板
ID:74687 發(fā)表于 2023-1-20 13:55 | 只看該作者
我也遇到這個(gè)問題了,我覺得你這個(gè)程序燈應(yīng)該是點(diǎn)不亮的,GPIO_Configuration函數(shù)加段代碼: RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);就可以點(diǎn)亮燈,但是兩個(gè)燈沒有進(jìn)行閃爍,而是一直亮的。
回復(fù)

使用道具 舉報(bào)

5#
無效樓層,該帖已經(jīng)被刪除
6#
ID:965189 發(fā)表于 2023-1-20 15:20 | 只看該作者
延時(shí)太短,閃了你也看不到。
回復(fù)

使用道具 舉報(bào)

7#
ID:419968 發(fā)表于 2023-1-20 20:29 | 只看該作者
操作stm32 的外設(shè)必須先使能外設(shè)的時(shí)鐘
回復(fù)

使用道具 舉報(bào)

8#
ID:74687 發(fā)表于 2023-1-21 08:30 | 只看該作者
這個(gè)問題的原因終于找到了,while(1)這個(gè)死循環(huán)里,n這個(gè)變量在delay后已經(jīng)變了,不再是第一次賦值的值了,所以每次delay后再進(jìn)行一次賦值,或者直接進(jìn)行define進(jìn)行定義常量。
回復(fù)

使用道具 舉報(bào)

9#
ID:883242 發(fā)表于 2023-1-23 11:16 | 只看該作者
n每次使用都要重新賦值,這是簡單的語法問題。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲国产精品日日av夜夜 | 夜夜草av| 中国av在线免费观看 | 亚洲成人精品 | 高清av电影| av中文字幕网 | 一级毛片成人免费看a | 天天干天天色 | 日本免费黄色一级片 | 最新中文字幕在线 | 精品一二区 | 亚洲福利av | 国产小视频在线观看 | 欧美一级在线 | 一区二区三区国产在线观看 | 亚洲国产看片 | 在线免费中文字幕 | 国产精品视频网站 | va精品 | 黄网站在线播放 | 永久av| 欧美一级片在线 | 粉色午夜视频 | 手机在线观看av | 亚洲女人天堂网 | 在线观看视频91 | 嫩草影院网址 | 中文字幕欧美日韩一区 | 中文字幕高清 | 国产精品99久久久久久www | 欧美精品一区二区三区四区 | 久久99精品久久久久蜜桃tv | 国产激情自拍视频 | 先锋影音资源网站 | 在线看成人av| 一本一道久久a久久精品蜜桃 | 日韩精品视频一区二区三区 | 国产精品高潮呻吟久久av野狼 | 精品国产一区二区三区久久狼黑人 | 99视频免费在线观看 | 国产激情视频网站 |