📄 main.c
字号:
// WriteReg(0xC5, CTRL_REG2);
WriteReg(0x55, CTRL_REG2);
//ReadReg(&val, CTRL_REG2);
// Set CTRL_REG3
WriteReg(0x00, CTRL_REG3);
//ReadReg(&val, CTRL_REG3);
}
/*************************************************************************
* Function Name: main
* Parameters: none
* Return: Int32U
*
* Description: The main subroutine
*
*************************************************************************/
int main(void)
{
#ifdef DEBUG
debug();
#endif
// Init clock system
Clk_Init();
// LCD init
LCDInit();
LCDContrast(0x45);
LCDClear();
LCDStr ( 0, " Welcome to ", 0 );
LCDStr ( 1, " STM32F103-STK", 0 );
LCDStr ( 2, " development ", 0 );
LCDStr ( 3, " board ", 0 );
LCDStr ( 5, "www.olimex.com", 1 );
LCDUpdate();
// Delay :-)
for(dly=0; dly<5000000; dly++);
label1:
// Init joystick
InitJoystick();
// Draw menue
UpdateMenu(MenuPos);
while(1) {
JoyPos = GetJoystickPosition();
if(JoyPos==KEY_UP) {
MenuPos--;
if((MenuPos<1)) MenuPos = 1;
UpdateMenu(MenuPos);
for(dly=0; dly<700000; dly++);
}
if(JoyPos==KEY_DOWN) {
MenuPos++;
if((MenuPos>9)) MenuPos = 9;
UpdateMenu(MenuPos);
for(dly=0; dly<700000; dly++);
}
if(JoyPos==KEY_CENTER) break;
}
// Test MMC ------------------------------------------------------------------
if(MenuPos == 1) {
if (CardIsPresent())
{
LCDClear();
LCDStr ( 0, " Card present!", 0 );
LCDStr ( 1, " remove it ", 0 );
LCDStr ( 2, " and try again", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
goto label1;
}
LCDClear();
LCDStr ( 0, "Please put MMC", 0 );
LCDStr ( 1, " card now ", 0 );
LCDStr ( 2, " with LOCK ON ", 0 );
LCDUpdate();
while (!CardIsPresent());
while(!CardIsProtected());
LCDClear();
LCDStr ( 0, "MMC WP test OK", 0 );
LCDStr ( 1, " Insert the ", 0 );
LCDStr ( 2, " card now ", 0 );
LCDStr ( 3, " with LOCK OFF", 0 );
LCDStr ( 4, "and press WAKE", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET);
test_state = TestMMC();
if(test_state == 1) {
LCDClear();
LCDStr ( 0, " Test MMC card", 0 );
LCDStr ( 1, " SUCCESS!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
else if (test_state == 2) {
LCDClear();
LCDStr ( 0, " MMC card is ", 0 );
LCDStr ( 1, " protected!!!", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
else if (test_state == 3) {
LCDClear();
LCDStr ( 0, " MMC card ", 0 );
LCDStr ( 1, "not present!!!", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
else {
LCDClear();
LCDStr ( 0, " Test MMC card", 0 );
LCDStr ( 1, " FAILED!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
goto label1;
}
// Test Audio ----------------------------------------------------------------
if(MenuPos == 2) {
// WAKE UP
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
LCDClear();
LCDStr ( 0, " Audio test ", 0 );
LCDStr ( 1, "now in STANDBY", 0 );
LCDStr ( 2, "press WAKE-UP ", 0 );
LCDStr ( 3, "to hear audio ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET);
LCDClear();
LCDStr ( 0, " Audio test ", 0 );
LCDStr ( 1, " now is ON ", 0 );
LCDStr ( 2, " ", 0 );
LCDStr ( 3, " ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
// Set STNBY pin
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// Chip on
GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_RESET);
// Microphone and headphone
ADCInit();
InitPWM();
// Enable interrupts
__enable_interrupt();
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
if((TIM1->SR)&(0x1)) {
// clear flag
TIM1->SR &= ~0x1;
if((jjj++)==3) {
jjj = 0;
ADCValue = GetADCChanel(ADC_Channel_1);
ADCValue>>=2;
SetDutyPeriod(ADCValue);
}
}
}
goto label1;
}
// Test RTC ------------------------------------------------------------------
if(MenuPos == 3) {
RTCInit();
LCDClear();
LCDStr ( 0, " RTC Test ", 0 );
LCDStr ( 1, "STAT led have ", 0 );
LCDStr ( 2, "to blink every", 0 );
LCDStr ( 3, " second ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
// Disable RTC
RCC_RTCCLKCmd(DISABLE);
// TURN OFF led
GPIOC->BSRR |= 0x00001000;
// restart :-)
goto label1;
}
// Test NRF ------------------------------------------------------------------
if(MenuPos == 4) {
LCDClear();
LCDStr ( 0, " Test NRF ", 0 );
LCDStr ( 1, " press WAKE-UP", 0 );
LCDStr ( 2, " send/receive ", 0 );
LCDStr ( 3, " one byte ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);
// RESET LCD
GPIO_WriteBit(GPIOC, GPIO_Pin_10, Bit_SET);
nRFSetting();
// B1 as input
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
TestNRF();
}
goto label1;
}
// Test USB ------------------------------------------------------------------
if(MenuPos == 5) {
LCDClear();
LCDStr ( 0, " Test USB ", 0 );
LCDStr ( 1, " connect usb ", 0 );
LCDStr ( 2, " cable and ", 0 );
LCDStr ( 4, "press WAKE-UP ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
USBSettings();
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
if((UsbCoreReq(UsbCoreReqDevState)==UsbDevStatusConfigured)&&(UsbCoreReq(UsbCoreReqDevSusState)==0)) {
LCDClear();
LCDStr ( 0, " Test USB ", 0 );
LCDStr ( 1, " SUCCESS!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
}
goto label1;
}
// Test MMA--------------------------------------------------------
if(MenuPos == 6) {
InitMMA();
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
//* // whait until data is ready for reading
//* val=0;
//* while((val&0x01)!=0x01) {
//* ReadReg(&val, 0x27);
//* }
// wait new data
while((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)) != Bit_SET);
// X
value = value_h = value_l = 0;
ReadReg(&value_l, OUTX_L);
ReadReg(&value_h, OUTX_H);
value = (value_h<<8)|value_l;
sprintf(buff_x, " X: 0x%04x\0", value);
// Y
value = value_h = value_l = 0;
ReadReg(&value_l, OUTY_L);
ReadReg(&value_h, OUTY_H);
value = (value_h<<8)|value_l;
sprintf(buff_y, " Y: 0x%04x\0", value);
// Z
value = value_h = value_l = 0;
ReadReg(&value_l, OUTZ_L);
ReadReg(&value_h, OUTZ_H);
value = (value_h<<8)|value_l;
sprintf(buff_z, " Z: 0x%04x\0", value);
LCDClear();
LCDStr ( 0, (unsigned char*)buff_x, 0 );
LCDStr ( 1, (unsigned char*)buff_y, 0 );
LCDStr ( 2, (unsigned char*)buff_z, 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
for(dly=0; dly<1000000; dly++);
}
goto label1;
}
// Test Extension Port--------------------------------------------------------
if(MenuPos == 7) {
LCDClear();
LCDStr ( 0, " Test EXT ", 0 );
LCDStr ( 1, " Pls, put EXTs", 0 );
LCDStr ( 2, " press WAKE-UP", 0 );
// LCDStr ( 5, "exit ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);
if(TestEXT()) {
LCDInit();
LCDContrast(0x45);
InitJoystick();
LCDClear();
LCDStr ( 0, " Test EXT ", 0 );
LCDStr ( 1, " SUCCESS!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
else {
LCDInit();
LCDContrast(0x45);
InitJoystick();
LCDClear();
LCDStr ( 0, " Test EXT ", 0 );
LCDStr ( 1, " FAILED!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
goto label1;
}
if(MenuPos == 8)
{
LCDClear();
LCDStr ( 0, " Test UEXT ", 0 );
LCDStr ( 1, " Pls, put UEXT", 0 );
LCDStr ( 2, " press WAKE-UP", 0 );
// LCDStr ( 5, "exit ", 0 );
LCDUpdate();
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);
if(TestUEXT()) {
LCDInit();
LCDContrast(0x45);
InitJoystick();
LCDClear();
LCDStr ( 0, " Test UEXT ", 0 );
LCDStr ( 1, " SUCCESS!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
else {
LCDInit();
LCDContrast(0x45);
InitJoystick();
LCDClear();
LCDStr ( 0, " Test UEXT ", 0 );
LCDStr ( 1, " FAILED!!! ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
goto label1;
}
// Test Joystick and Button --------------------------------------------------
if(MenuPos == 9) {
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
JoyPos = GetJoystickPosition();
if(JoyPos==KEY_UP) {
LCDClear();
LCDStr ( 0, " UP ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
if(JoyPos==KEY_DOWN) {
LCDClear();
LCDStr ( 4, " DOWN ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
if(JoyPos==KEY_LEFT) {
LCDClear();
LCDStr ( 2, "LEFT ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
if(JoyPos==KEY_RIGHT) {
LCDClear();
LCDStr ( 2, " RIGHT", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
if(JoyPos==KEY_CENTER) {
LCDClear();
LCDStr ( 2, " CENTER ", 0 );
LCDStr ( 5, "exit ", 0 );
LCDUpdate();
}
}
goto label1;
}
}
/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -