Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 28.05.2016, 22:24   #426
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
Что интересно...
RM0091 STM32F0x1/STM32F0x2/STM32F0x8
это да, но он как-бы не уточнял, а обычно мечешься между сериями и хочется чего-то универсального, чтобы не вспоминать.
Greg вне форума   Ответить с цитированием
Старый 29.05.2016, 10:26   #427
Marat
Senior Member
 
Аватар для Marat
 
Регистрация: 27.03.2007
Адрес: Минск
Сообщений: 834
Вес репутации: 805/62
Marat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to behold
По умолчанию Re: STM32 для чайников

Вообще-то я уточнял в первом моём посте:
Цитата:
Сообщение от Marat Посмотреть сообщение
Доброго дня всем..
STM32F103RCxxx
....
И в RM0008 залез сейчас специально:
Код:
Each I/O port bit is freely programmable, however the I/O port registers have to be
accessed as 32-bit words (half-word or byte accesses are not allowed)
косяк.
Причем, что интересно, если ранее PC13 у меня модифицировался, то после (uint8_t *) вроде как перестал (что мне и требовалось)....
Надо мутить танцы с бубном вокруг BSRR

З.Ы, For HHIMERA "..... или взять F0 серию " - для меня не прокатит
__________________
RTFM.....и будет вам счастье
Marat вне форума   Ответить с цитированием
Старый 29.05.2016, 11:04   #428
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 57
Сообщений: 2,831
Вес репутации: 3992/109
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Marat Посмотреть сообщение
Причем, что интересно, если ранее PC13 у меня модифицировался, то после (uint8_t *) вроде как перестал (что мне и требовалось)....
Надо мутить танцы с бубном вокруг BSRR

З.Ы, For HHIMERA "..... или взять F0 серию " - для меня не прокатит
Лень подключать Ф1ХХ чтобы проверить... но что-то мне подсказывает... что в RM0008 просто дурь-копипаст с чего-то другого...
В доках СТМ такое встречается...

По поводу танцев с BSRR... А что там сложного??? В старшее полуслово грузим маску бит с которыми надо работать... одновременно с данными в младшем полуслове... в вашем случае...
Т.е. используем...
Цитата:
Note: If both BSx and BRx are set, BSx has priority.
Таким макаром можно рулить группой бит... даже если они разбросаны по всему порту...
http://www.microchip.su/showpost.php...9&postcount=89

=======
В Ф4ХХ в h-файле BSRR вообще разделили...
Цитата:
__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */
__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */
хотя в референсе он как 32 бита...
Но что мешает его самому задефайнить как один __IO uint32_t... при необходимости ???
__________________
"Я не даю готовых решений, я заставляю думать!"(С)

Последний раз редактировалось HHIMERA; 29.05.2016 в 11:24.
HHIMERA вне форума   Ответить с цитированием
Старый 29.05.2016, 12:12   #429
Marat
Senior Member
 
Аватар для Marat
 
Регистрация: 27.03.2007
Адрес: Минск
Сообщений: 834
Вес репутации: 805/62
Marat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to beholdMarat is a splendid one to behold
По умолчанию Re: STM32 для чайников

Да я не говорю, что сложно. Условно для младшего байта:
Код:
GPIOC->BSRR=0x00FF0000|data;
Кстати по поводу копипаста - повторюсь, после указания (uint8_t *) у меня в железе ситуация поменялась (PC13 перестал сбрасываться). И я сразу поверил, что всё работает с байт-адресацией сразу в регистр ODR.... пока Greg меня не "успокоил окончательно"

Плюсануть пока не даёт ни HHIMERA ни Greg - примите в устной форме .....
__________________
RTFM.....и будет вам счастье
Marat вне форума   Ответить с цитированием
Старый 29.05.2016, 14:16   #430
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
Лень подключать Ф1ХХ чтобы проверить... но что-то мне подсказывает... что в RM0008 просто дурь-копипаст с чего-то другого...
В доках СТМ такое встречается...
не, не дурь, они конкретно перелопатили порты начиная с серии 2хх (у L1хх такая же фигня)
общий принцип (сильвера), чем позже (начнешь) - тем лучше...

кстати в 1хх для какой-то периферии (иис на альтернативе) вообще как заклинание только удавалось ноги поднять
Greg вне форума   Ответить с цитированием
Старый 29.05.2016, 14:45   #431
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 57
Сообщений: 2,831
Вес репутации: 3992/109
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Greg Посмотреть сообщение
не, не дурь, они конкретно перелопатили порты начиная с серии 2хх (у L1хх такая же фигня)
Это я в курсе... я про другое... Какой-то индус писнул "32 bit only" ещё в пререлизе... и пошло гулять... В Ф2хх уже другой индус поправил... не читая док Ф1ХХ... Принцип то... "как к слову, полуслову и байту" никто так и не отменил... в общем случае...
Самое последнее что мне попалось... бардак в вязании таймеров в СТМ8С903... а так... было и до этого... После некоторого количества "чудес"... просто перестал на это реагировать...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 05.06.2016, 20:01   #432
jammer
Senior Member
 
Регистрация: 24.07.2007
Сообщений: 240
Вес репутации: 176/48
jammer has a spectacular aura aboutjammer has a spectacular aura about
По умолчанию Re: STM32 для чайников

как в HAL можно активировать одновременно 3 pwm канала?

Код:
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
даёт вот такой расколбас в начале.


может как-то можно отключить счетчик таймера и включить после активации pwm?
Миниатюры
pwm.jpg  
jammer вне форума   Ответить с цитированием
Старый 05.06.2016, 20:09   #433
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32 для чайников

jammer, начать читать RM .
Ну что я говорил? Очередная жертва ардуино-стайл...
dosikus вне форума   Ответить с цитированием
Старый 05.06.2016, 20:13   #434
jammer
Senior Member
 
Регистрация: 24.07.2007
Сообщений: 240
Вес репутации: 176/48
jammer has a spectacular aura aboutjammer has a spectacular aura about
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от dosikus Посмотреть сообщение
jammer, начать читать RM .
Ну что я говорил? Очередная жертва ардуино-стайл...
иди отдохни, по сути есть что сказать?
jammer вне форума   Ответить с цитированием
Старый 05.06.2016, 20:23   #435
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Сам и отдыхай. По делу все сказано - читай RM/
А считать что каналы таймера включаются раздельно, а потом удивляться - почему все так плохо, могут только ардуинщики железа не нюхавшие.

Код:
    TIM3->PSC = 48-1;
    TIM3->ARR = 256-1;
    TIM3->CCR2 = 20;
    TIM3->CCR1 = 10;
		TIM3->CCR4 = 80;

		TIM3->CCMR1 |= (TIM_CCMR1_OC2M_2 |TIM_CCMR1_OC2M_1 |TIM_CCMR1_OC2FE |
		                TIM_CCMR1_OC1M_2 |TIM_CCMR1_OC1M_1 |TIM_CCMR1_OC1FE );
		TIM3->CCMR2 |= (TIM_CCMR2_OC4M_2 |TIM_CCMR2_OC4M_1 |TIM_CCMR2_OC4FE ); 
		TIM3->CCER |= TIM_CCER_CC2E |TIM_CCER_CC1E |TIM_CCER_CC4E;
		TIM3->CR1 |= TIM_CR1_CEN;
Мало того на многих линейках можно задействовать DMA_burst. Но для юзверей калокуба сие страшная тайна ...

Последний раз редактировалось dosikus; 05.06.2016 в 20:40.
dosikus вне форума   Ответить с цитированием
Старый 05.06.2016, 21:20   #436
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от dosikus Посмотреть сообщение
Мало того на многих линейках можно задействовать DMA_burst. Но для юзверей калокуба сие страшная тайна ...
да ладно, все там есть
Код:
(#) The DMA Burst is managed with the two following functions:
         HAL_TIM_DMABurst_WriteStart()
         HAL_TIM_DMABurst_ReadStart()
но толку, refman читать must...
Greg вне форума   Ответить с цитированием
Старый 06.06.2016, 11:54   #437
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Greg, дык я ж не говорил что в калокубе этого нет.
Им сие не ведомо, равно как и синхронный старт каналов ...

Кстати надыбал тут одну методичку в картинках , некоторым в помощь...
Миниатюры
pwm_motor.pdf  
dosikus вне форума   Ответить с цитированием
Старый 23.06.2016, 18:51   #438
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,679
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Коллеги, есть очень интересный бутлоадер, под LPC через USB.
Легко гугглиться по словам "LPC secondary usb msd bootloader".
Фишка в том, что при подключении к РС оно притворяется диском (MSD Class), на котором виден один файл - содержимое флеша проца.
Его можно:
1) прочитать.
2) стереть - при этом сотрется весь флеш проца, кроме бутлоадера.
3) записать новый файл - т.е. апгрейд прошивки.

Это очень удобно т.к. для апгрейда фирмваре не надо никакого доп. софта на РС и не надо ставить никаких драйверов.

Хочеться такую-же штуку для STM32, в данный момент F1 и F4, но у самого знаний в USB для этого не хватает.

Поиск в сети вывел на сделанное товарищем с ником RtxOnAir, под F1.
Но оно существует в виде ехе-файла на РС, в котором выставляешь ножку входа в бутлоадер, частоту кварца и по нажатию кнопки генерируется бинарник бутлоадера.
Но хочеться иметь бОльшую гибкость, плюс encription прошивки.

Не встречал ли кто такого бутлоадера для STM в исходниках?

Или может, кому захочется самому портировать с NXP на STM? Думаю, многим пригодится.
DimaS вне форума   Ответить с цитированием
Старый 23.06.2016, 19:07   #439
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,712
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от DimaS Посмотреть сообщение
Коллеги, есть очень интересный бутлоадер, под LPC через USB.
Легко гугглиться по словам "LPC secondary usb msd bootloader".
Спасибо! Заинтересовало!
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 23.06.2016, 21:15   #440
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,679
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Спасибо! Заинтересовало!
Да, это классная штука, я ее в двух проектах на LPC1768 использовал, модифицировав немного под себя.
Теперь надо для STM32F103 и для F407, но сам я не смогу
DimaS вне форума   Ответить с цитированием
Старый 01.07.2016, 21:01   #441
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Всем сдрасте. Появился вопрос. Хотел активировать датчик температуры. Проверяю состояние битов, все правильно, считаю в ручную получающиеся значение, совпадает с показаниями камня. Только вот странное оно какое то, 108 градусов. И при попытке нагреть камень измеренное значение стоит как вкопанное. Почитал, DS там мелким шрифтом написана что данный режим не тестировался. Получается что эта функция не во всех камнях реализована корректно. Камень 401RE, плата Nucleo.
diger67 вне форума   Ответить с цитированием
Старый 01.07.2016, 23:33   #442
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Какая та фигня, если проходить в пошаговом режиме дебагером, то показывает правильно 36 градусов. Если запускаю прогон, то откуда то берутся еще 40 градусов, показывает около 80 градусов.. Кто может подсказать в чем шляпа.
diger67 вне форума   Ответить с цитированием
Старый 02.07.2016, 01:13   #443
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Все, разобрался. Оказалось что при измерении сенсора температуры надо отключать прерывание по окончании преобразования и проверять состояние того же флага.
diger67 вне форума   Ответить с цитированием
Старый 28.07.2016, 22:41   #444
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Доброго времени суток. Подскажите в чем может быть проблема. Организую функцию записи байта в порт. Порт состоит из восьми пинов на разных портах. Пробовал записывать и с помощью CMSIS и с помощью StdPeriph, результат один выводится каждый 4-й байт. Т.е. 2-й и 3-й тупо нули.
CMSIS:
Цитата:

if(((byte >> 1) & 0x01) == 1)
{
GPIOA->BSRR = 0x0200;
}
else
{
GPIOA->BRR = 0x0200;

}
StdPeriph:
Цитата:
if(((data >> 1) & 0x01) == 1)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_9, (BitAction)1)
}
else
{
GPIO_WriteBit(GPIOA, GPIO_Pin_9, (BitAction)0)
}
Таких записей в функции понятное дело восемь. Отмечу только что происходит это в Keil на 103rbt, в кокосе все работает. Та же конструкция без проблем работает на 401 камне, но нужен 103 т.к.там есть CAN.
diger67 вне форума   Ответить с цитированием
Старый 29.07.2016, 05:29   #445
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Да, совсем все просто оказалось, упустил из вида что JTAG у 103 серии по умолчанию включен. Выключил и все зашуршало. Давно не кодил, совсем забыл о данном факте.
diger67 вне форума   Ответить с цитированием
Старый 01.08.2016, 12:45   #446
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 34
Сообщений: 2,094
Вес репутации: 3340/98
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Скажите, а конструкцию вида
if(((byte >> 1) & 0x01) == 1)
разве не лучше будет заменить более простой и эффективной конструкцией вида
if(byte & 0x02)
или, если нужна переменная, например в цикле, то
if(byte & (1 << n))
?
Romantic вне форума   Ответить с цитированием
Старый 01.08.2016, 14:52   #447
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Romantic Посмотреть сообщение
Скажите, а конструкцию вида
if(((byte >> 1) & 0x01) == 1)
разве не лучше будет заменить более простой и эффективной конструкцией вида
if(byte & 0x02)
или, если нужна переменная, например в цикле, то
if(byte & (1 << n))
?
две первые - не равноценные
посмотри дизасм, во что выливается последняя конструкция.
насколько помню - ад по размеру, он прям реально начнет двигать в цикле...

а с первой записью - у пиков все было чрезвычачайно компактно, срабатывала битовая инструкция.
Greg вне форума   Ответить с цитированием
Старый 01.08.2016, 15:35   #448
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 57
Сообщений: 2,831
Вес репутации: 3992/109
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Greg Посмотреть сообщение
во что выливается последняя конструкция.
насколько помню - ад по размеру, он прям реально начнет двигать в цикле...
Насколько помню... это у восьмибиток ад... У СТМ32... насколько помню... всё не так плохо... Но лучше заглянуть в АСМ... это да...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 02.08.2016, 02:57   #449
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 51
Сообщений: 202
Вес репутации: 211/18
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от Romantic Посмотреть сообщение
Скажите, а конструкцию вида
if(((byte >> 1) & 0x01) == 1)
разве не лучше будет заменить более простой и эффективной конструкцией вида
if(byte & 0x02)
или, если нужна переменная, например в цикле, то
if(byte & (1 << n))
?
Запись выглядит проще, но вот объем кода от этого не меняется, проверено. Скомпилил свою версию и вашу, объем кода для записи во флешь не изменился ни на байт.
Не, не работает так.
Цитата:
void TFT_Write_data(uint8_t data)
{
//if(((data >> 0) & 0x01) == 1) {DB0(1);} else {DB0(0);}
if((data & 0x01) == 1) {DB0(1);} else {DB0(0);}
if(((data >> 1) & 0x01) == 1) {DB1(1);} else {DB1(0);}
if(((data >> 2) & 0x01) == 1) {DB2(1);} else {DB2(0);}
if(((data >> 3) & 0x01) == 1) {DB3(1);} else {DB3(0);}
if(((data >> 4) & 0x01) == 1) {DB4(1);} else {DB4(0);}
if(((data >> 5) & 0x01) == 1) {DB5(1);} else {DB5(0);}
if(((data >> 6) & 0x01) == 1) {DB6(1);} else {DB6(0);}
if(((data >> 7) & 0x01) == 1) {DB7(1);} else {DB7(0);}

WR_STROBE
}
А так все работает.

Последний раз редактировалось diger67; 02.08.2016 в 03:09.
diger67 вне форума   Ответить с цитированием
Старый 02.08.2016, 13:24   #450
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,679
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: STM32 для чайников

Цитата:
Сообщение от diger67 Посмотреть сообщение
А так все работает.
Работать оно может и работает, но делать так не очень правильно.
Правильнее так:
Код:
void TFT_Write_data(uint8_t data){
    DB0(  (data & (1<<0)) ? 1:0);
    DB1(  (data & (1<<1)) ? 1:0);
    DB2(  (data & (1<<2)) ? 1:0);
    DB3(  (data & (1<<3)) ? 1:0);
    DB4(  (data & (1<<4)) ? 1:0);
    DB5(  (data & (1<<5)) ? 1:0);
    DB6(  (data & (1<<6)) ? 1:0);
    DB7(  (data & (1<<7)) ? 1:0);

    WR_STROBE
}
P.S. Есть и другие варианты, например DB0( (data & (1<<0))!=0);
DimaS вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Производительность STM32 Cortex M3 Pridnya Микроконтроллеры других производителей 43 16.10.2013 12:29
fatfs +usb Помогите разобраться сфайловой системой для stm32 Natali Вопросы начинающих 1 19.07.2012 11:00
Проект автономки для авто на pic16f84a Томас Продукция MICROCHIP 14 11.03.2012 21:37
Тайминги для 1-wire Wierus Общетехнические вопросы 15 21.09.2009 21:46
господа, где добыть для ознакомпления среду разработки для FUJITSU dynaco Общетехнические вопросы 2 04.06.2007 06:10


Часовой пояс GMT +3, время: 13:05.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot