Пн окт 29, 2018 10:23:50
- и чё? А картинка 5 я для кого рисовал?Вы же его до загрузки лоадером всё равно будете отлаживать.
Пн окт 29, 2018 10:33:59
Пн окт 29, 2018 10:39:50
Пн окт 29, 2018 10:43:19
Пн окт 29, 2018 10:54:55
Чёт не припомню из практики, не из своей, не из практики коллег, чтобы хоть в одном STMовском МК при старте был хоть один регистр не по дефолту. Всё, как доктор в ДШ прописал. У них есть свои баги, но они связаны не с этим и давно все ворэраунды описаны в ерате. Так что не сочиняйте сказки. Тем более, что они не по теме.Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.
Пн окт 29, 2018 10:59:39
Пн окт 29, 2018 11:09:36
Пн окт 29, 2018 11:10:22
Чёт не припомню из практики, не из своей, не из практики коллег, чтобы хоть в одном STMовском МК при старте был хоть один регистр не по дефолту. Всё, как доктор в ДШ прописал. У них есть свои баги, но они связаны не с этим и давно все ворэраунды описаны в ерате. Так что не сочиняйте сказки. Тем более, что они не по теме.Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.
Пн окт 29, 2018 11:11:16
Пн окт 29, 2018 11:30:04
Пн окт 29, 2018 11:42:44
int main(void)
{
uint32_t i;
//uint8_t CData[8];
//System_Clock_Init();
// System_Timer_Init();
My_Uart1_Init();
My_Uart2_Init();
My_Uart3_Init();
i = flash_read(0xE000ED08);
//Send_Uart_N(2,i);
while(1)
{
Delay_ms(1);
// LedTime=My_ADC1_Read(10);
}
}
Пн окт 29, 2018 11:49:27
int main(void)
{
uint32_t i;
//uint8_t CData[8];
//System_Clock_Init();
// System_Timer_Init();
My_Uart1_Init();
My_Uart2_Init();
My_Uart3_Init();
i = flash_read(0xE000ED08);
//Send_Uart_N(2,i);
while(1)
{
Delay_ms(1);
// LedTime=My_ADC1_Read(10);
}
}
Пн окт 29, 2018 11:57:12
Go_to_App(void);
Пн окт 29, 2018 12:02:18
Пн окт 29, 2018 12:19:51
void USART2_INIT(){
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; // GPIOA Clock ON. Alter function clock ON
//TX
GPIOA->CRL &= ~GPIO_CRL_CNF2; // Clear CNF bit 9
GPIOA->CRL |= GPIO_CRL_CNF2_1; // Set CNF bit 9 to 10 - AFIO Push-Pull
GPIOA->CRL |= GPIO_CRL_MODE2_0; // Set MODE bit 9 to Mode 01 = 10MHz
GPIOA->BSRR |= GPIO_BSRR_BS2;
//RX
GPIOA->CRL &= ~GPIO_CRL_CNF3; // Clear CNF bit 9
GPIOA->CRL |= GPIO_CRL_CNF3_0; // Set CNF bit 9 to 01 = HiZ
GPIOA->CRL &= ~GPIO_CRL_MODE3; // Set MODE bit 9 to Mode 01 = 10MHz
RCC->APB1ENR |= RCC_APB1ENR_USART2EN; //USART1 Clock ON
USART2->BRR = 0x139; // Bodrate for 115000 on 36 Mhz
USART2->CR1 |= USART_CR1_UE | USART_CR1_RE | USART_CR1_RXNEIE | USART_CR1_TE; // USART1 ON, TX ON, RX ON
NVIC_EnableIRQ(USART2_IRQn); // USART2 interrupt enable
}
void USART2_TX(uint8_t data){
while(!(USART2->SR & USART_SR_TC));
USART2->DR = data;
}
void send_text(char *data){
while(*data!='\0'){
USART2_TX(*data);
data++;
}
}
int main(){
GPIO_Init();
for(uint32_t i=0; i<36000; i++);
if(!(GPIOA->IDR & GPIO_IDR_IDR1)){
SystemInit();
USART2_INIT();
__enable_irq();
USART2_TX(13);
send_text("Programming mode. Erease firmware? Y/N");
}
else{
GoToUserApp();
}
while(1);
}
Пн окт 29, 2018 12:26:34
Пн окт 29, 2018 12:37:33
Пн окт 29, 2018 13:09:09
Пн окт 29, 2018 15:01:28
Пн окт 29, 2018 15:06:06