新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2019-7-22
- 在线时间
- 12 小时
|
5金钱
问题是这样,用了SysTick_Handler,时钟到达5秒进入第一个if 再过十秒进入while 循环完成一次,
s10_count置为0。此时应该继续循环,s10_count加到10再进入循环,但是第一次循环结束后s10_count就一直是0不再跟随时钟变化。
初学者,请各位大佬赐教。。。
********************************************************************************
main.c
int main(void)
{
int cnt=0; //计次
delay_init(); //延时函数初始化
SysTick_Config(SystemCoreClock/1000);
NVIC_SetPriority(SysTick_IRQn, 0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
RS485_Init(9600);
while(1)
{
if(sec==5){
sec=0;
s10_count=0;
while(1){
if(s10_count==10){
printf("Im In");
cnt++;
s10_count=0;
}
if(cnt==10){
cnt=0;
break;
}
}
}
}
}
stm32f10x_it.c 中有用的部分
int ms=0;
int s10_count=0; //10秒种定时
int sec=0;
int min=0;
int min_30=0; //半小时定时
int hour=0;
int day=0;
void SysTick_Handler(void)
{
ms++;
if(ms>999){ //秒定时
sec++;
s10_count++;
ms=0;
}
if(sec>59){ //分定时
min++;
sec=0;
}
if(min>59){ //一小时定时
hour++;
min=0;
}
if(hour>23){ //天定时
day++;
hour=0;
}
}
stm32f10x_it.h
extern int min;
extern int sec;
extern int s10_count;
void NMI_Handler(void);
void HardFault_Handler(void);
void MemManage_Handler(void);
void BusFault_Handler(void);
void UsageFault_Handler(void);
void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
|
|