Блин, покажи ты код уже! Я гадать что ли должен, где у тебя там проблема?
[code][/code]
while(1)
{
if(!(GPIOC->IDR&GPIO_IDR_IDR_3 ))
{
delay_ms(10);
// pauza++; // IWDG->KR = 0xAAAA;
flag4=1;
// flag=1;
// flag5=1;
// delay_ms(10);
//TIM3->CNT=0;
//pauza=0;
}
if(flag4==1&&GPIOC->IDR&GPIO_IDR_IDR_3)
{
// delay_ms(10);
flag4=0;
//flag=0;
//pauza=0;
menu++;
menu_en++;
// pauza=0;
}
if(menu_en==1)
{
// if(TIM3->CNT>50)
//{
// GPIOC-> BSRR |=GPIO_BSRR_BS13;
//GPIOD->BSRR |= GPIO_BSRR_BS1;
// }
// else
// {
// GPIOC-> BSRR |=GPIO_BSRR_BR13;
//GPIOD->BSRR |= GPIO_BSRR_BR1;
//}
}
if(menu_en==2)
{
//a++;
}
if(menu_en==3)
{
// TIM3->CNT=0;
//min1= TIM3->CNT;
}
if(menu_en==4)
{
//TIM3->CNT=0;
// hour1=TIM3->CNT;
}
if(menu_en==5)
{
//day1=TIM3->CNT;
}
if(menu_en==6)
{
// date1=TIM3->CNT;
}
if(menu_en==7)
{
//month1=TIM3->CNT;
}
if(menu_en==8)
{
//year1=TIM3->CNT;
}
if(menu_en==9)
{
if((GPIOC->IDR&GPIO_IDR_IDR_5)==0)
{
//__disable_irq ();
// delay_ms(5);
if (pauza>2)
{
pauza=0;
if ( a==1023)
{
a=0;
}
a++; // TIM2->CNT=0;
// __enable_irq ();
}
}
if((GPIOC->IDR&GPIO_IDR_IDR_6)==0)
{
// __disable_irq ();
if (pauza>2)
{
pauza=0;
if (a==0)
{
a=1023; // if (a==0)
} //{
// }
a--;
}
}
}
if(menu_en==10)
{
menu_en=0;
}
if(menu==0)
{
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
// I2C2->DR= 0 ;
//while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=0x00;//0b00000000 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR= 0b11010001 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
sec= I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
min= I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
hour=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
day=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
date=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
month=I2C2->DR;
//I2C2->CR1&=~I2C_CR1_ACK;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
year = I2C2->DR;
I2C2->CR1&=~I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_STOP;
sec = RTC_ConvertFromDec(sec); //����������� � ���������� ������
min = RTC_ConvertFromDec(min); //����������� � ���������� ������
hour = RTC_ConvertFromDec(hour); //����������� � ���������� ������
day = RTC_ConvertFromDec(day); //����������� � ���������� ������
year = RTC_ConvertFromDec(year); //����������� � ���������� ������
month = RTC_ConvertFromDec(month); //����������� � ���������� ������
date = RTC_ConvertFromDec(date); //����������� � ���������� ������ uart_transmit ()
LCD_SetPos(0,0);
LCD_SendChar( date/10 + 0x30);
LCD_SendChar( date%10 + 0x30);
LCD_SendChar('.');
LCD_SendChar( month/10 + 0x30);
LCD_SendChar( month%10 + 0x30);
LCD_SendChar('.');
LCD_SendChar('2');
LCD_SendChar('0');
LCD_SendChar(year/10 + 0x30);
LCD_SendChar(year%10 + 0x30);
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SendChar('-');
LCD_SendChar(day + 0x30);
// LCD_SendChar((char) (day%10) + 0x30);
LCD_SetPos(0,1);
LCD_SendChar(hour/10 + 0x30);
LCD_SendChar(hour%10 + 0x30);
LCD_SendChar(':');
LCD_SendChar(min/10 + 0x30);
LCD_SendChar(min%10 + 0x30);
LCD_SendChar(':');
// sec = RTC_ConvertFromDec(sec);
LCD_SendChar(sec/10 + 0x30);
LCD_SendChar(sec%10 + 0x30);
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SendChar(' ');
//USART_TX((uint16_t),"MAMA");
//sprint(buf10,"text");
USART_TX((uint8_t*)"Mama",13);
//tx_str1(buf10);
//USART_TX ("MAMA");
// tx_uart1(0xF0);
}
if(menu==1)
{
LCD_SetPos(0,0);
// LCD_SendChar('3');
LCD_PrintMyChar(0);
LCD_SendChar(' ');
LCD_SendChar('H');
LCD_SendChar('o');
LCD_PrintMyChar(3);
LCD_PrintMyChar(2);
LCD_PrintMyChar(4);
LCD_SendChar(' ');
LCD_SendChar('p');
// LCD_PrintMyChar(5);
LCD_SendChar('o');
LCD_PrintMyChar(5);
LCD_SendChar('o');
LCD_PrintMyChar(4);
LCD_SendChar(' ');
LCD_SendChar(' ');
LCD_SetPos(0,1);
LCD_SendChar('C');
LCD_SendChar(' ');
LCD_SendChar('H');
LCD_SendChar('o');
LCD_PrintMyChar(3);
LCD_PrintMyChar(1);
LCD_PrintMyChar(4);
LCD_SendChar(' ');
LCD_PrintMyChar(6);
LCD_SendChar('o');
LCD_PrintMyChar(7);
LCD_SendChar('o');
LCD_PrintMyChar(4);
// LCD_SendChar(' ');
// tx_str1("MAMA");
// tx_uart1('M');
// delay_ms(100);
}
if(menu==2)
{
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
// I2C2->DR= 0 ;
//while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR= 0b00000000 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR= 0b11010001 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
sec= I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
min= I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
hour=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
day=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
date=I2C2->DR;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
month=I2C2->DR;
//I2C2->CR1&=~I2C_CR1_ACK;
while (!(I2C2->SR1& I2C_SR1_RXNE)){};
year = I2C2->DR;
I2C2->CR1&=~I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_STOP;
sec = RTC_ConvertFromDec(sec); //����������� � ���������� ������
min = RTC_ConvertFromDec(min); //����������� � ���������� ������
hour = RTC_ConvertFromDec(hour); //����������� � ���������� ������
day = RTC_ConvertFromDec(day); //����������� � ���������� ������
year = RTC_ConvertFromDec(year); //����������� � ���������� ������
month = RTC_ConvertFromDec(month); //����������� � ���������� ������
date = RTC_ConvertFromDec(date); //����������� � ���������� ������ uart_transmit ()
sprintf(buf1,"%02d.%02d.20%02d -%d ", date, month,year,day);
LCD_SetPos(0,0);
LCD_String(buf1);
sprintf(buf2,"%02d:%02d:%02d ",hour,min,sec);
LCD_SetPos(0,1);
LCD_String(buf2);
}
if(menu==3)
{
sprintf(buf4,"min1=%2d %2d ",min1,min);
LCD_SetPos(0,0);
LCD_String(buf4);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
delay_ms(10);
//flag=1;
flag1=1 ;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4)
{
//flag=0;
flag1=0;
//pauza=0;
min=min1;
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x00 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(sec=0);
I2C2->DR= 0x01 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(min);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==4)
{
sprintf(buf5,"hour1=%2d %2d ",hour1,hour);
LCD_SetPos(0,0);
LCD_String(buf5);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
delay_ms(10);
// flag=1;
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4 )
{
//flag=0;
flag1=0;
//pauza=0;
hour=hour1;
// I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x02 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(hour);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==5)
{
sprintf(buf6,"day1=%d %d ",day1,day);
LCD_SetPos(0,0);
LCD_String(buf6);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
delay_ms(10);
// flag=1;
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4 )
{
//flag=0;
flag1=0;
// pauza=0;
day=day1;
// I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x03 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(day);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==6)
{
sprintf(buf7,"date1=%2d %2d ",date1,date);
LCD_SetPos(0,0);
LCD_String(buf7);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
//flag=1;
delay_ms(10);
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4 )
{
// flag=0;
flag1=0;
pauza=0;
date =date1;
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x04 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(date);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==7)
{
sprintf(buf8,"month1=%2d %2d ",month1,month);
LCD_SetPos(0,0);
LCD_String(buf8);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
delay_ms(10);
//flag=1;
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4 )
{
//flag=0;
flag1=0;
// pauza=0;
month=month1;
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x05 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(month);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==8)
{
sprintf(buf9,"year1=20%02d,20%02d ",year1,year);
LCD_SetPos(0,0);
LCD_String(buf9);
LCD_SetPos(0,1);
LCD_String(" ");
if(!(GPIOC->IDR&GPIO_IDR_ID4 ))
{
// flag=1;
delay_ms(10);
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_ID4 )
{
flag=0;
flag1=0;
// pauza=0;
year =year1;
I2C2->CR1|=I2C_CR1_ACK;
I2C2->CR1|= I2C_CR1_START;
while (!(I2C2->SR1& I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->DR = 0b11010000 ;
while (!(I2C2->SR1& I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
I2C2->DR= 0x06 ;
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->DR=RTC_ConvertFromBinDec(year);
while (!(I2C2->SR1 & I2C_SR1_TXE)){};
I2C2->CR1|= I2C_CR1_STOP;
}
}
if(menu==9)
{
sprintf(buf10,"a=%2d ",a);
LCD_SetPos(0,0);
LCD_String(buf10);
LCD_SetPos(0,1);
LCD_String(" ");
a1=a/256;
a2=a%256;
if(!(GPIOC->IDR&GPIO_IDR_IDR_4 ))
{
delay_ms(10);
// flag=1;
flag1=1;
}
if(flag1==1&&GPIOC->IDR&GPIO_IDR_IDR_4 )
{
// flag=0;
// delay_ms(10);
flag1=0;
// pauza=0;
// I2C1->CR1|=I2C_CR1_ACK;
I2C1->CR1|= I2C_CR1_START;
while (!(I2C1->SR1& I2C_SR1_SB)){};
(void) I2C1->SR1;
I2C1->DR = 0xA0 ;
while (!(I2C1->SR1& I2C_SR1_ADDR)){};
(void) I2C1->SR1;
(void) I2C1->SR2;
I2C1->DR= 0;
while (!(I2C1->SR1 & I2C_SR1_TXE)){};
I2C1->DR= 1;
while (!(I2C1->SR1 & I2C_SR1_TXE)){};
I2C1->DR=a1;
while (!(I2C1->SR1 & I2C_SR1_TXE)){};
I2C1->DR=a2;
while (!(I2C1->SR1 & I2C_SR1_TXE)){};
I2C1->CR1|= I2C_CR1_STOP;
}
}
if(menu==10)
{
sprintf(buf10,"a=%2d ",a);
LCD_SetPos(0,0);
LCD_String(buf10);
LCD_SetPos(0,1);
LCD_String(" ");
}
if(menu==11)
{
menu=0;
}
//IWDG->KR = 0xAAAA;
}
}
volatile unsigned int a,b;
во такой код