标题:
C语言使用static关键字命名变量后发现变量不动
[打印本页]
作者:
刘正棋
时间:
2024-5-1 11:55
标题:
C语言使用static关键字命名变量后发现变量不动
如题,这个帖子算一个小记吧,就是去掉static后变量达到我想要的效果了,我以为必须加static才有这样的效果呢
#include "delay.h"
#include "sys_other.h"
#include "timer.h"
#include "Key.h"
uint8_t KeyNum;
uint16_t val=1440;
int main(void)
{
delay_init(); //延时函数初始化
Key_Init();
LED_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
TIM4_PWM_Init(7199,0); //不分频。PWM频率=72000000/(900)(0+1)=80Khz
while(1)
{
KeyNum = Key_GetNum(); //将 Key_GetNum() 返回值给KeyNum
TIM_SetCompare1(TIM4,3600); //TIM4->CCR1=400
TIM_SetCompare2(TIM4,val); //TIM4->CCR2=800
if (KeyNum == 1)
{
val+=360;
}
if (val > 7200)
{
val=1440;
}
}
}
复制代码
就是开始的这个
uint16_t val=1440; 加了static后,怎么按按键占空比都不变,把static去了之后反而正常了,也能满足要求,之前我很担心程序每次循环一次
val都会被重置,但是看了看示波器发现并未出现我担心的情况
作者:
npn
时间:
2024-5-2 13:21
楼主没有说清楚此C语言是什么操作系统运行的。
static是静态变量的意思,编译器会为该变量分配固定地址,函数返回后变量的值不会丢失。
作者:
hzd530
时间:
2024-5-3 21:04
楼主uint16_t val是全局变量,根本不要static,一般static用在一个函数内的变量,每次调用函数内部static的变量都是上次的值
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1