Gekatonheyr » 28 сен 2014, 08:41
Та периферия-то затактирована, порты А,В,С подключены. Ножки настроены. Смотрел на отладке - все нормально вроде... Кроме того - бинаник жеж из фирмвари заливается и работает нормально. Пробовал откомпилировать проект в Keil - все получается, заливается и работает нормально.
У меня еще другая проблема по этому поводу возникала. Пишу вот такую програмку:
#define STM32L1XX_MDP
#include "main.h"
static __IO uint32_t TimingDelay;
int main(void)
{
bool StanbyWakeUp ;
int a= SystemCoreClock / 1000;
SysTick_Config(a);
if (PWR_GetFlagStatus(PWR_FLAG_SB) != RESET)
{
/* System resumed from STANDBY mode */
/* Clear StandBy flag */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_ClearFlag(PWR_FLAG_SB);
/* set StandbyWakeup indicator*/
StanbyWakeUp = TRUE;
} else
{
/* Reset StandbyWakeup indicator*/
StanbyWakeUp = FALSE;
}
RCC->APB1ENR |= (RCC_APB1ENR_PWREN | RCC_APB1ENR_LCDEN);
LCD_GLASS_Configure_GPIO();
LCD_GLASS_Init();
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);
GPIO_InitTypeDef gpio;
GPIO_StructInit(&gpio);
gpio.GPIO_Mode=GPIO_Mode_OUT;
gpio.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
gpio.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &gpio);
GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);
LCD_GLASS_ScrollSentence("*Hello world* ",1,50);
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);
Delay(50);
GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);
Delay(50);
}
}
void SysTick_Handler()
{
TimingDelay_Decrement();
}
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
Все компилируется, заливается и работает. НО стоит отключить и включить питание, как происходит затык, перезаливка не спасает. Стирание памяти тоже. Помогает только заливка бинарника от ST, после которой все повторяется: залил - работает; отключил питание, потом включил - висим; залил прошивку из фирмвари - снова работаем до первого отключения питания. Причем случается все это именно на функциях проверки синхронизации флагов. Первый там где я указал, второй на функции WaitForSynhro() из SPL.
Я тут подумал может с фьюзами чего не то получается, по копание в документации пока ничего не дало.
Может какая-то хитрая настройка в проэкте есть чтобы такого не случалось. Я просто новичек в МК, вот и спрашиваю более опытных товарищей..
Из-за общност