📄 dc550_main.c
字号:
/*****************************************************************************/
/* CONFIDENTIAL */
/* Sigpro Copyright 2003, All rights reserved */
/*****************************************************************************/
/* CLIENT: Telematrix */
/* PROJECT: DC550 Digital Centrex Phone */
/* FILE: dc550_main.c */
/*****************************************************************************/
/* This file contains the main() function, which first initializes the */
/* program and then enters the main loop. */
/*****************************************************************************/
#include "dc550_local.h"
#include "dc550_hwinit.h"
#include "dc550_interrupt.h"
#include "dc550_i2cdriver.h"
#include "dc550_display.h"
#include "dc550_hookswitchmonitor.h"
#include "dc550_modemcontroller.h"
#include "dc550_leddriver.h"
#include "dc550_keypad.h"
#include "dc550_usartdriver.h"
#include "dc550_audio.h"
#include "dc550_controller.h"
/******************************************************************************
* GLOBAL VARIABLES
*****************************************************************************/
unsigned int main_counter;
DC550InterruptCounter main_lastinterruptcounter;
/******************************************************************************
* FUNCTION: void main(void)
******************************************************************************
* DESCRIPTION:
* This main() function contains the initialization code and the main loop.
*****************************************************************************/
void main(void) {
// These are the initialization functions.
hwinit_init_cpu();
hwinit_init_clock();
hwinit_init_portpins();
hwinit_init_timera();
hwinit_init_adc12();
hwinit_init_usart();
interrupt_init();
i2cdriver_init();
display_init();
hookswitchmonitor_init();
modemcontroller_init();
leddriver_init();
keypad_init();
usartdriver_init();
audio_init();
controller_init();
hwinit_init_misc();
// Initialize variables for the main loop
main_counter = 0;
main_lastinterruptcounter = interrupt_counter;
// This is the main loop. The compiler likes for(;;) better than while(1).
for(;;) {
if((interrupt_counter - main_lastinterruptcounter) >= (MAIN_LOOPTIME)) {
dc550_printf("Main Loop State: %d\r\n", main_counter);
}
// This while loop synchronizes the main loop
while((interrupt_counter - main_lastinterruptcounter) < MAIN_LOOPTIME);
main_lastinterruptcounter = interrupt_counter;
// Pseudocode: set debug oscilloscope pin high
// Execute various main loop tasks
i2cdriver_exec();
switch(main_counter) {
case 0:
display_exec();
hookswitchmonitor_exec();
keypad_exec();
usartdriver_exec();
modemcontroller_exec();
main_counter += 1;
break;
case 1:
display_exec();
hookswitchmonitor_exec();
keypad_exec();
usartdriver_exec();
audio_exec();
main_counter += 1;
break;
case 2:
display_exec();
hookswitchmonitor_exec();
keypad_exec();
usartdriver_exec();
controller_exec();
main_counter += 1;
break;
case 3:
display_exec();
hookswitchmonitor_exec();
keypad_exec();
usartdriver_exec();
audio_exec();
hwinit_reset_watchdog();
main_counter = 0;
break;
}
// Pseudocode: set debug oscilloscope pin low
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -