Единственное RESET придется жать вручную. По крайней мере у мну в 6.70.2, IAR RESET'ом не управляет,
а в куче проектов юзаю пины SWD .
И лучше переходите на Keil , дебуггер там на порядок лучше...
Код: Выделить всё
RCC->AHBENR |= (RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOAEN);
GPIOA->MODER = 0x28000000;
GPIOB->MODER |= GPIO_MODER_MODER1_1;
GPIOB->AFR[0] |= 0x00000010; //ВОТ ОНО, ЗЛО
GPIOB->OTYPER = 0x00000000;
GPIOB->OSPEEDR |= (GPIO_OSPEEDR_OSPEEDR1_1 | GPIO_OSPEEDR_OSPEEDR1_0);
GPIOA->PUPDR = 0x00000000;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->CR1 |= TIM_CR1_ARPE;
TIM3->CCMR2 |= TIM_CCMR2_OC4PE;
TIM3->CCMR2 |= (TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1);
TIM3->CCER |= TIM_CCER_CC4E;
TIM3->ARR = 23999;
TIM3->CCR4 = 1200;
TIM3->CR1 |= TIM_CR1_CEN;УМВР.Леонид Иванович писал(а):Птица эта стоит. Но все равно прошивка не стартует даже после ручного сброса.
Код: Выделить всё
// ADC1->CR |= ADC_CR_ADCAL; //Запуск калибровки АЦП
//while (!(ADC1->CR & ADC_CR_ADCAL))
// ;
ADC1->SMPR |= (ADC_SMPR_SMP_1);
ADC1->CFGR1 |= ADC_CFGR1_CONT;
ADC1->CHSELR |= ADC_CHSELR_CHSEL1;
ADC1->CFGR2 |= ADC_CFGR2_CKMODE_1;
ADC1->CR |= ADC_CR_ADEN;
ADC1->CR |= ADC_CR_ADSTART;
while (!(ADC1->ISR & ADC_ISR_EOC))
{
} //ждем пока первое преобразование завершится
;Код: Выделить всё
while (ADC1->CR & ADC_CR_ADCAL){};
Да, не захватил ту часть кодаdosikus писал(а):Тактирование модуля включено?
Код: Выделить всё
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;Код: Выделить всё
ADC1->CR |= ADC_CR_ADCAL; //Запуск калибровки АЦП
while ((ADC1->CR & ADC_CR_ADCAL) == 1)
{
}
;
ADC1->SMPR |= (ADC_SMPR_SMP_1);
ADC1->CFGR1 |= ADC_CFGR1_CONT;
ADC1->CHSELR |= ADC_CHSELR_CHSEL1;
ADC1->CFGR2 |= ADC_CFGR2_CKMODE_1;
ADC1->CR |= ADC_CR_ADEN;
ADC1->CR |= ADC_CR_ADSTART;
while ((ADC1->ISR & ADC_ISR_EOC) == 0)
{
} //ждем пока первое преобразование завершится
;У меня это добро в железе отлаживается, если вы об этомdosikus писал(а): Завтра вживую проверю
Код: Выделить всё
/**
* @brief Active the Calibration operation for the selected ADC.
* @note The Calibration can be initiated only when ADC is still in the
* reset configuration (ADEN must be equal to 0).
* @param ADCx: where x can be 1 to select the ADC1 peripheral.
* @retval ADC Calibration factor
*/
uint32_t ADC_GetCalibrationFactor(ADC_TypeDef* ADCx)
{
uint32_t tmpreg = 0, calibrationcounter = 0, calibrationstatus = 0;
/* Set the ADC calibartion */
ADCx->CR |= (uint32_t)ADC_CR_ADCAL;
/* Wait until no ADC calibration is completed */
do
{
calibrationstatus = ADCx->CR & ADC_CR_ADCAL;
calibrationcounter++;
} while((calibrationcounter != CALIBRATION_TIMEOUT) && (calibrationstatus != 0x00));
if((uint32_t)(ADCx->CR & ADC_CR_ADCAL) == RESET)
{
/*Get the calibration factor from the ADC data register */
tmpreg = ADCx->DR;
}
else
{
/* Error factor */
tmpreg = 0x00000000;
}
return tmpreg;
}Код: Выделить всё
tmpreg = ADCx->DR;Calibration software procedure:
1. Ensure that ADEN=0
2. Set A DCAL=1
3. Wait until ADCAL=0
4. The calibration factor can be read from bits 6:0 of ADC_DR.
Вот минимальный проект - мигание светодиодами на Discovery с STM32F100RBT6B. Когда запускаю отладку - все нормально, мигают. Когда зашиваю через ST-Link Utility - тоже нормально. А когда делаю в IAR "Download active application", всё замирает.dosikus писал(а):Скиньте минимальный глючный проект
Если нужны удобства,тогда однозначно Keil.Леонид Иванович писал(а): Использование утилиты - дело не в "религии", как Вы сразу написали, а в элементарном удобстве.
Условие никогда не будет истинно. Нужно выбросить "== 1".isx писал(а):Код: Выделить всё
while ((ADC1->CR & ADC_CR_ADCAL) == 1)
То есть при дебагге всегда стартует, при просто прошивке -никогда ? Или иногда стартует?Леонид Иванович писал(а): Еще раз попробовал на "боевом" проекте (блок питания PSL-3604) - все виснет, сброс не помогает.
Изинямс , только добрался ...Леонид Иванович писал(а):а после download и нажатия сброса - никогда.
Да никаких скриптов я сам не писал. Взял по умолчанию, только увеличил размер HEAP. Если взять скрипт по умолчанию и ничего не менять, то приложение глухо виснет при любом способе прошивки. Это логично - выходим за размер HEAP. Так что проблема пока не решена.dosikus писал(а):Скриптик по кухаркиным статьям с ДиАхтунг'а стряпали ?????