STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
ЛИ, ставим птицу на USE flash loader(s) в опции Debugger.
Единственное RESET придется жать вручную. По крайней мере у мну в 6.70.2, IAR RESET'ом не управляет,
а в куче проектов юзаю пины SWD .
И лучше переходите на Keil , дебуггер там на порядок лучше...
Единственное RESET придется жать вручную. По крайней мере у мну в 6.70.2, IAR RESET'ом не управляет,
а в куче проектов юзаю пины SWD .
И лучше переходите на Keil , дебуггер там на порядок лучше...
- Реклама
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Птица эта стоит. Но все равно прошивка не стартует даже после ручного сброса. После долгих плясок с бубном задействовал утилиту ST-Link. Но даже если бы пункт Download заработал, вручную жать сброс меня бы решительно не устроило. С утилитой красота - жму F8, кристалл прошивается, и прошивка стартует.
Re: STM32 новичку в ARM что к чему
а где "| RCC_APB2ENR_AFIOEN"[/quote]
Пропустил
ШИМ заработал после некоторых мучений. Вот код:
GPIOB->AFR[0] |= 0x00000010; . Дело в том, что #define GPIO_AFRH_AFR1 выдаёт в значении "3", а для запуска нужно "1". Все попытки изменить значение ни к чему не привели (в описании тоже ничего), поэтому выход - только числовое значение. 
Пропустил
ШИМ заработал после некоторых мучений. Вот код:
Код: Выделить всё
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;Re: STM32 новичку в ARM что к чему
УМВР.Леонид Иванович писал(а):Птица эта стоит. Но все равно прошивка не стартует даже после ручного сброса.
Скиньте минимальный глючный проект . Есть 100ки, 103и,F407,F429,F051.
Сразу кучу факторов отсеем...
Re: STM32 новичку в ARM что к чему
Опять я к вам 
Вроде как немного разобрался с АЦП, но есть некоторые проблемы. Вот код (работает):
1) Если раскомментировать строки, то бит ADEN не устанавливается. (Да и сам ADCAL почему-то не устанавливается)
2) В отладке КЕЙЛ говорит, что while (!(ADC1->ISR & ADC_ISR_EOC)) не дожидается сброса бита (отладку произвожу построчно, и выход из цикла происходит при ещё установленном бите).
Вроде как немного разобрался с АЦП, но есть некоторые проблемы. Вот код (работает):
Код: Выделить всё
// 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))
{
} //ждем пока первое преобразование завершится
;2) В отладке КЕЙЛ говорит, что while (!(ADC1->ISR & ADC_ISR_EOC)) не дожидается сброса бита (отладку произвожу построчно, и выход из цикла происходит при ещё установленном бите).
- Реклама
Re: STM32 новичку в ARM что к чему
isx, что за камень то ?
Re: STM32 новичку в ARM что к чему
STM32F030F4P6
Re: STM32 новичку в ARM что к чему
Тактирование модуля включено?
Собственно в Keil можешь вручную биты пощелкать .
Завтра вживую проверю , Но судя по картинко, ждем пока ADCAL равен 1 а не 0 .
Итого

Собственно в Keil можешь вручную биты пощелкать .
Завтра вживую проверю , Но судя по картинко, ждем пока ADCAL равен 1 а не 0 .
Итого
Код: Выделить всё
while (ADC1->CR & ADC_CR_ADCAL){};
Re: STM32 новичку в ARM что к чему
Да, не захватил ту часть кода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 писал(а): Завтра вживую проверю
Поторопился... Видимо был глюк. Работает только если закомментировать строку ADC1->CR |= ADC_CR_ADCAL; (while даже можно оставить).
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
глянули бы как в примерах делается:
Код: Выделить всё
/**
* @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;
}Re: STM32 новичку в ARM что к чему
А существенное там похоже сие
Вычитка DR ... 
Код: Выделить всё
tmpreg = ADCx->DR;- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
а что не так?
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.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Вот минимальный проект - мигание светодиодами на Discovery с STM32F100RBT6B. Когда запускаю отладку - все нормально, мигают. Когда зашиваю через ST-Link Utility - тоже нормально. А когда делаю в IAR "Download active application", всё замирает.dosikus писал(а):Скиньте минимальный глючный проект
P.S. Нажал на Discovery копку RESET - всё поехало. Еще раз попробовал на "боевом" проекте (блок питания PSL-3604) - все виснет, сброс не помогает. Глючный проект здесь: http://radiokot.ru/forum/download/file.php?id=182801. Правда, особого смысла разбираться в проблеме нет, так как вручную жать сброс меня решительно не устраивает. Использование утилиты - дело не в "религии", как Вы сразу написали, а в элементарном удобстве.
- Вложения
-
- STM_test.zip
- (93.73 КБ) 149 скачиваний
Re: STM32 новичку в ARM что к чему
Если нужны удобства,тогда однозначно Keil.Леонид Иванович писал(а): Использование утилиты - дело не в "религии", как Вы сразу написали, а в элементарном удобстве.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Условие никогда не будет истинно. Нужно выбросить "== 1".isx писал(а):Код: Выделить всё
while ((ADC1->CR & ADC_CR_ADCAL) == 1)
Re: STM32 новичку в ARM что к чему
То есть при дебагге всегда стартует, при просто прошивке -никогда ? Или иногда стартует?Леонид Иванович писал(а): Еще раз попробовал на "боевом" проекте (блок питания PSL-3604) - все виснет, сброс не помогает.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Да, именно так. При дебаге всегда стартует, а после download и нажатия сброса - никогда.
Re: STM32 новичку в ARM что к чему
Ок . Правда доберусь до железа только в понедельник ...
Re: STM32 новичку в ARM что к чему
Изинямс , только добрался ...Леонид Иванович писал(а):а после download и нажатия сброса - никогда.
Выбрал скрипт линкера по дефолту, впихнул мигание LED'ми набортными после вашей систем_инит .
Все стартует . С вашим скриптом IAR даже шить не хотел ...
Скриптик по кухаркиным статьям с ДиАхтунг'а стряпали ?????
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Да никаких скриптов я сам не писал. Взял по умолчанию, только увеличил размер HEAP. Если взять скрипт по умолчанию и ничего не менять, то приложение глухо виснет при любом способе прошивки. Это логично - выходим за размер HEAP. Так что проблема пока не решена.dosikus писал(а):Скриптик по кухаркиным статьям с ДиАхтунг'а стряпали ?????


