STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение urry »

я не знаю, как считать :)
4095*4095*256 = FFE00100 - в uint32 укладываемся
Реклама
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: STM32 новичку в ARM что к чему

Сообщение balmer »

stemplar писал(а):Стоп стоп стоп.

Код: Выделить всё

i=0;
while (i<65)
{
i++;
sum=sum+volt;
}
sum=sum\64;
Можно делать и так если процессорного времени не жалко, но надо не забыть в цикле вставить ожидание. когда ADC новый результат оцифрует и положит в регистр.
Реклама
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: STM32 новичку в ARM что к чему

Сообщение eess9 »

День добрый всем! Подскажите пожалуйста начинающему где моя ошибка:

Взял 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);
    } 
}
основываясь на 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. Что я сделал неверно?
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: STM32 новичку в ARM что к чему

Сообщение ChipKiller »

eess9 писал(а):основываясь на ....... Что я сделал неверно?
... а чем не устраивают примеры из самого Keil_a? папка \ARM\Board\ST ...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: STM32 новичку в ARM что к чему

Сообщение balmer »

eess9 писал(а):

Код: Выделить всё

void Delay(uint32_t a)
{
    uint32_t i;
    for (i=0; i<a; i++) {};
}

Delay(1000);
Может слишком часто просто мигает? 1000 раз прокрутить пустой цикл это мало совсем, да и от частоты зависит сильно.
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: STM32 новичку в ARM что к чему

Сообщение ChipKiller »

balmer писал(а):Может слишком часто просто мигает?
... в таком случае светодиод бы светился....
Реклама
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: STM32 новичку в ARM что к чему

Сообщение eess9 »

О существовании примеров Keil я просто не знал.

Осциллографом на выводе 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 что к чему

Сообщение ChipKiller »

Боюсь что у меня какая-то проблема в самом железе. +3.3В приходит на VDD6 и AVDD. На остальное цифровое питание внутри контроллера соединено и нет смысла тянуть 3.3В ко всем ногам VDD1, VDD2 и т.д. С землей тоже самое..
... если хотите, чтобы работало - не нужно "самодеятельности" с подключением. Когда подключите в соответствии с рекомендациями datashet_a все заработает.....
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

Кто разбирался с I2C подскажите эти две команды равнозначны I2C_GenerateSTART(_I2C, DISABLE); и I2C_GenerateSTOP(_I2C, ENABLE); ?
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: STM32 новичку в ARM что к чему

Сообщение drakon »

хочу спросить у тех кто сталкивался с такой проблемой. пишу в KEIL 4.6. при записи такого:

Код: Выделить всё

uint16_t k;
k = 'А'; //русская А
в переменную k помещается число 0xD090 вместо 0xC0. как это исправить?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

drakon, известные грабли .
Кодировку с unicode в редакторе на ANSI сменить . В файлах исходников так же ...
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

"Всё придумано до нас!"(С)
http://caxapa.ru/357846.html
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: STM32 новичку в ARM что к чему

Сообщение drakon »

dosikus, HHIMERA, спасибо! все заработало. кстати я все пункты кроме последнего уже когда-то проделывал для Sprint-Layout60, так что пришлось только поменять dll'ку.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

требуется помощь и разъяснение:

Код: Выделить всё

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; 
    } 
  }   
}
Здесь в данном случае настроил прерывание на кнопку PA0 платы Дискавери. В цикле for организавал задержку от дребезга, в главном цикле переключаю светодиоды в зависимости от флага(flag), но больше 15 переменной button присвоить нельзя, не пойму почему?
Если поставить 16 и более, на кнопку прерывание не реагирует, а 15 задержка маленькая заметен дребезг.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: STM32 новичку в ARM что к чему

Сообщение uk8amk »

Разве задержку антидребезга не таймером делают?
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Re: STM32 новичку в ARM что к чему

Сообщение Foks »

Код: Выделить всё

if (GPIOA->IDR & 1) {
    for (int button = 0; button < 15; button ++ )
     flag=!flag;
    } 
This. Что это вообще? 16 раз инвертировать переменную флаг?
-------
В коде какой-то бред. Я так понимаю, циклами пытались организовать задержку, и проверить, нажата ли кнопка после этой задержки. Как сказано выше, антидребезг делают таймером, и в основном на отрыв кнопки. На нажатие можно реагировать сразу, т.к. при отпущенной кнопке случайных нажатий никогда не происходит. Если же кнопка была нажата, и вдруг возвращает состояние "отпущена", то отпускание фиксируется только тогда, когда состояние стабильно возвращается в течении нескольких прерываний таймера. Никаких задержек в коде прерывания быть не должно!
Последний раз редактировалось Foks Сб июн 08, 2013 14:58:54, всего редактировалось 1 раз.
Giggity giggity goo!
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: STM32 новичку в ARM что к чему

Сообщение menzoda »

uk8amk писал(а):Разве задержку антидребезга не таймером делают?
Да ее всем делают, только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Re: STM32 новичку в ARM что к чему

Сообщение Foks »

menzoda писал(а):программное устранение задержки
Опечатка?

Программное устранение дребезга гибко настраивается, уменьшает число внешних деталей (как следствие и цену изделия), не зависит от внешних факторов (температура, etc) - по-моему, преимуществ достаточно.
Giggity giggity goo!
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

amv2000 писал(а):в данном случае настроил прерывание на кнопку PA0 платы Дискавери.
Юзать прерывания - моветон, в данном случае. STM просто привёл это как пример для знакомства с прерываниями, это не руководство к действию.
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

menzoda писал(а):только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?
Foks писал(а): Программное устранение дребезга гибко настраивается, уменьшает число внешних деталей (как следствие и цену изделия), не зависит от внешних факторов (температура, etc) - по-моему, преимуществ достаточно.
Не спорьте... в разных случаях всё по разному будет...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

Вернуться в «ARM»