4095*4095*256 = FFE00100 - в uint32 укладываемся
STM32 новичку в ARM что к чему
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: STM32 новичку в ARM что к чему
я не знаю, как считать 
4095*4095*256 = FFE00100 - в uint32 укладываемся
4095*4095*256 = FFE00100 - в uint32 укладываемся
- Реклама
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
Можно делать и так если процессорного времени не жалко, но надо не забыть в цикле вставить ожидание. когда ADC новый результат оцифрует и положит в регистр.stemplar писал(а):Стоп стоп стоп.Код: Выделить всё
i=0; while (i<65) { i++; sum=sum+volt; } sum=sum\64;
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: STM32 новичку в ARM что к чему
День добрый всем! Подскажите пожалуйста начинающему где моя ошибка:
Взял stm32f107 и написал в Keil следующий код:
основываясь на http://microtechnics.ru/stm32-uchebnyj- ... da-vyvoda/
То есть, светодиодик на PB6 и им помигать.
Зашил при помощи Flash Loader Demo через USART.
Питание 3.3В, на AVDD тоже есть эти 3.3В. Вывод NRST через 10кОм на 3.3В, через 0.1мкФ на землю.
Но на выводе PB6 всегда 0. Что я сделал неверно?
Взял stm32f107 и написал в Keil следующий код:
Код: Выделить всё
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
unsigned int i=0;
void Delay(uint32_t a)
{
uint32_t i;
for (i=0; i<a; i++) {};
}
int main()
{
GPIO_InitTypeDef port;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_StructInit(&port);
port.GPIO_Mode = GPIO_Mode_Out_PP;
port.GPIO_Pin = GPIO_Pin_6;
port.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &port);
while(1)
{
Delay(1000);
GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(1000);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
}
}То есть, светодиодик на PB6 и им помигать.
Зашил при помощи Flash Loader Demo через USART.
Питание 3.3В, на AVDD тоже есть эти 3.3В. Вывод NRST через 10кОм на 3.3В, через 0.1мкФ на землю.
Но на выводе PB6 всегда 0. Что я сделал неверно?
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... а чем не устраивают примеры из самого Keil_a? папка \ARM\Board\ST ...eess9 писал(а):основываясь на ....... Что я сделал неверно?
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
Может слишком часто просто мигает? 1000 раз прокрутить пустой цикл это мало совсем, да и от частоты зависит сильно.eess9 писал(а):Код: Выделить всё
void Delay(uint32_t a) { uint32_t i; for (i=0; i<a; i++) {}; } Delay(1000);
- Реклама
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... в таком случае светодиод бы светился....balmer писал(а):Может слишком часто просто мигает?
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: STM32 новичку в ARM что к чему
О существовании примеров Keil я просто не знал.
Осциллографом на выводе 0 с любой временной разверткой от мксек до десятков мсек.
Боюсь что у меня какая-то проблема в самом железе. +3.3В приходит на VDD6 и AVDD. На остальное цифровое питание внутри контроллера соединено и нет смысла тянуть 3.3В ко всем ногам VDD1, VDD2 и т.д. С землей тоже самое VSS6 и AVSS. NRST через 10кОм на +3.3В и через 0.1мкФ на землю. На PB6 через 300Ом светодиод катодом на землю.
Больше ни какие выводы не надо задействовать?
Осциллографом на выводе 0 с любой временной разверткой от мксек до десятков мсек.
Боюсь что у меня какая-то проблема в самом железе. +3.3В приходит на VDD6 и AVDD. На остальное цифровое питание внутри контроллера соединено и нет смысла тянуть 3.3В ко всем ногам VDD1, VDD2 и т.д. С землей тоже самое VSS6 и AVSS. NRST через 10кОм на +3.3В и через 0.1мкФ на землю. На PB6 через 300Ом светодиод катодом на землю.
Больше ни какие выводы не надо задействовать?
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... если хотите, чтобы работало - не нужно "самодеятельности" с подключением. Когда подключите в соответствии с рекомендациями datashet_a все заработает.....Боюсь что у меня какая-то проблема в самом железе. +3.3В приходит на VDD6 и AVDD. На остальное цифровое питание внутри контроллера соединено и нет смысла тянуть 3.3В ко всем ногам VDD1, VDD2 и т.д. С землей тоже самое..
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: STM32 новичку в ARM что к чему
Кто разбирался с I2C подскажите эти две команды равнозначны I2C_GenerateSTART(_I2C, DISABLE); и I2C_GenerateSTOP(_I2C, ENABLE); ?
Re: STM32 новичку в ARM что к чему
хочу спросить у тех кто сталкивался с такой проблемой. пишу в KEIL 4.6. при записи такого:
в переменную k помещается число 0xD090 вместо 0xC0. как это исправить?
Код: Выделить всё
uint16_t k;
k = 'А'; //русская АRe: STM32 новичку в ARM что к чему
drakon, известные грабли .
Кодировку с unicode в редакторе на ANSI сменить . В файлах исходников так же ...
Кодировку с unicode в редакторе на ANSI сменить . В файлах исходников так же ...
Re: STM32 новичку в ARM что к чему
"Всё придумано до нас!"(С)
http://caxapa.ru/357846.html
http://caxapa.ru/357846.html
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
dosikus, HHIMERA, спасибо! все заработало. кстати я все пункты кроме последнего уже когда-то проделывал для Sprint-Layout60, так что пришлось только поменять dll'ку.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: STM32 новичку в ARM что к чему
требуется помощь и разъяснение: Здесь в данном случае настроил прерывание на кнопку PA0 платы Дискавери. В цикле for организавал задержку от дребезга, в главном цикле переключаю светодиоды в зависимости от флага(flag), но больше 15 переменной button присвоить нельзя, не пойму почему?
Если поставить 16 и более, на кнопку прерывание не реагирует, а 15 задержка маленькая заметен дребезг.
Код: Выделить всё
void interrupt_init(void)
{
NVIC_SetPriority(EXTI0_IRQn, 15); /* Назначить прерываниям от EXTI0 самый низкий проритет. */
NVIC_EnableIRQ(EXTI0_IRQn); /* Разрешить прерывания от EXTI0 в NVIC. */
}
void EXTI0_IRQHandler(void) {
if (EXTI->PR & (1<<0)) { /* если произошло прерывание от EXTI0 */
EXTI->PR|=(1<<0); /* В процессе обработки прерывания в регистре EXTI_PR
записью единицы необходимо сбросить флаг события вызвавшего данное прерывание.*/
/*--------------------- Обработка события EXTI0 -----------------------------*/
if (GPIOA->IDR & 1) {
for (int button = 0; button < 15; button ++ )
flag=!flag;
}
}
}Если поставить 16 и более, на кнопку прерывание не реагирует, а 15 задержка маленькая заметен дребезг.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: STM32 новичку в ARM что к чему
Разве задержку антидребезга не таймером делают?
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Код: Выделить всё
if (GPIOA->IDR & 1) {
for (int button = 0; button < 15; button ++ )
flag=!flag;
} -------
В коде какой-то бред. Я так понимаю, циклами пытались организовать задержку, и проверить, нажата ли кнопка после этой задержки. Как сказано выше, антидребезг делают таймером, и в основном на отрыв кнопки. На нажатие можно реагировать сразу, т.к. при отпущенной кнопке случайных нажатий никогда не происходит. Если же кнопка была нажата, и вдруг возвращает состояние "отпущена", то отпускание фиксируется только тогда, когда состояние стабильно возвращается в течении нескольких прерываний таймера. Никаких задержек в коде прерывания быть не должно!
Последний раз редактировалось Foks Сб июн 08, 2013 14:58:54, всего редактировалось 1 раз.
Giggity giggity goo!
Re: STM32 новичку в ARM что к чему
Да ее всем делают, только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?uk8amk писал(а):Разве задержку антидребезга не таймером делают?
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Опечатка?menzoda писал(а):программное устранение задержки
Программное устранение дребезга гибко настраивается, уменьшает число внешних деталей (как следствие и цену изделия), не зависит от внешних факторов (температура, etc) - по-моему, преимуществ достаточно.
Giggity giggity goo!
Re: STM32 новичку в ARM что к чему
Юзать прерывания - моветон, в данном случае. STM просто привёл это как пример для знакомства с прерываниями, это не руководство к действию.amv2000 писал(а):в данном случае настроил прерывание на кнопку PA0 платы Дискавери.
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
menzoda писал(а):только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?
Не спорьте... в разных случаях всё по разному будет...Foks писал(а): Программное устранение дребезга гибко настраивается, уменьшает число внешних деталей (как следствие и цену изделия), не зависит от внешних факторов (температура, etc) - по-моему, преимуществ достаточно.
"Я не даю готовых решений, я заставляю думать!"(С)


