找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C語言使用static關(guān)鍵字命名變量后發(fā)現(xiàn)變量不動

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1115217 發(fā)表于 2024-5-1 11:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題,這個帖子算一個小記吧,就是去掉static后變量達到我想要的效果了,我以為必須加static才有這樣的效果呢

  1. #include "delay.h"
  2. #include "sys_other.h"
  3. #include "timer.h"
  4. #include "Key.h"

  5. uint8_t KeyNum;
  6. uint16_t val=1440;


  7. int main(void)
  8. {               
  9.    delay_init();                     //延時函數(shù)初始化        
  10.     Key_Init();        
  11.     LED_Init();
  12.       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  13.      TIM4_PWM_Init(7199,0);         //不分頻。PWM頻率=72000000/(900)(0+1)=80Khz
  14.      while(1)
  15.        {        

  16.           KeyNum = Key_GetNum();    //將 Key_GetNum() 返回值給KeyNum                 
  17.           TIM_SetCompare1(TIM4,3600);                //TIM4->CCR1=400                                         
  18.           TIM_SetCompare2(TIM4,val);            //TIM4->CCR2=800
  19.          if (KeyNum == 1)
  20.            {
  21.              val+=360;
  22.            }
  23.           if (val > 7200)
  24.            {
  25.               val=1440;
  26.            }
  27.      }
  28. }
復(fù)制代碼
就是開始的這個uint16_t val=1440; 加了static后,怎么按按鍵占空比都不變,把static去了之后反而正常了,也能滿足要求,之前我很擔(dān)心程序每次循環(huán)一次val都會被重置,但是看了看示波器發(fā)現(xiàn)并未出現(xiàn)我擔(dān)心的情況


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:57657 發(fā)表于 2024-5-2 13:21 | 只看該作者
樓主沒有說清楚此C語言是什么操作系統(tǒng)運行的。
static是靜態(tài)變量的意思,編譯器會為該變量分配固定地址,函數(shù)返回后變量的值不會丟失。
回復(fù)

使用道具 舉報

板凳
ID:307544 發(fā)表于 2024-5-3 21:04 | 只看該作者
樓主uint16_t val是全局變量,根本不要static,一般static用在一個函數(shù)內(nèi)的變量,每次調(diào)用函數(shù)內(nèi)部static的變量都是上次的值
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表