Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 30.10.2017, 11:50  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Всё гораздо проще. Никому эти "задержки на микросекунды" на СТМ32 и на не вперлись!
Если это нужно только для начального инита, то пофигу на чём и как делать, хоть на НОПах, это всё равно один раз. Если это протокол чего-либо, то тогда эти задержки - лютый моветон, ардуиновздроч, не предвещающий ничего хорошего. Правильнее будет юзать таймера. Слава богу их там хватает и они развитые.
Реклама:

Последний раз редактировалось STM32F0; 30.10.2017 в 11:53.
STM32F0 вне форума  
Непрочитано 30.10.2017, 20:53  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от MikhailSh Посмотреть сообщение
Правильно я понимаю, что DWT является частью ядра ARM, но в Сortex_M0 (STM32F0) ее нет
Верно. В -M0 нет отладочного таймера.

А про SysTick - вполне себе подходящий вариант. Работает этот таймер на частоте ядра (если не настраивался иначе), так что для получения микросекундных задержек нужно будет модифицировать процедуры ожидания для DWT.
Примерно так:

Код:
// Функцию оставляем
static __inline uint32_t delta(uint32_t t0, uint32_t t1) {
    return (t1 - t0); 
};
void delay_us(uint32_t us) {
      uint32_t t0 =  SysTick-›VAL;
      uint32_t us_count_tic =  us * (SystemCoreClock/1000000);
      while (delta(t0, SysTick-›VAL) ‹ us_count_tic) ;
};
Разве что придётся учитывать, что systick 24 битный. Работать будет, но только в определённых условиях и нужно отполировать.
-Alan- вне форума  
Сказали "Спасибо" -Alan-
MikhailSh (30.10.2017)
Непрочитано 30.10.2017, 22:42  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Господи, это ярчайший пример как делать не нужно, ни в коем случае. Не, ну если устроит точность +- растоптанный лапоть, то тогда точно можно.
Особенно умиляет
Код:
while (delta(t0, SysTick-›VAL) ‹ us_count_tic) ;
Это просто рукалицо!
STM32F0 вне форума  
Непрочитано 30.10.2017, 22:49  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

STM32F0, да ладно. Я вот тоже нарукожопил когда-то:
Код:
void shutter_wait_block(uint32_t us, void(*fn_ready)()){
	if(!fn_ready) return;
	us *= 72;
	// wait for us*72 cycles
	SCB_DEMCR  |= 0x01000000;
	DWT_CYCCNT  = 0;
	DWT_CONTROL|= 1;
	while(DWT_CYCCNT ‹ us);
	fn_ready();
}
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 30.10.2017, 23:01  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от eddy Посмотреть сообщение
да ладно
Да мне тем более "да ладно". Хоть в гамаке дро....те и стоя, в водолазном костюме.
STM32F0 вне форума  
Непрочитано 30.10.2017, 23:13  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,839
Сказал спасибо: 2,530
Сказали Спасибо 11,764 раз(а) в 5,895 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от STM32F0 Посмотреть сообщение
Хоть в гамаке дро....те и стоя, в водолазном костюме.
Гы! Богатый опыт... Трудно соревноваться...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 03.01.2018, 21:36  
MDAI
Частый гость
 
Регистрация: 14.05.2014
Адрес: Новосибирск
Сообщений: 11
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MDAI на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

У меня так сделано!

void SysTick_Handler()
{
if (TimingDelay != 0) { TimingDelay--; }
}


void delay_ms(uint32_t mSecs)
{
SysTick_Config(SystemCoreClock / DELAY_TICK_FREQUENCY_MS); // DELAY_TICK_FREQUENCY_MS
TimingDelay = mSecs+1;
while (TimingDelay != 0);
}


void delay_us(uint32_t uSecs)
{
SysTick_Config(SystemCoreClock / DELAY_TICK_FREQUENCY_US); // DELAY_TICK_FREQUENCY_US
TimingDelay = uSecs;
while (TimingDelay != 0);
}



#include "stm32f30x.h"
#define __DELAY_H__
#ifdef __DELAY_H__

#define DELAY_TICK_FREQUENCY_US 1000000 /* = 1MHZ -› microseconds delay #define DELAY_TICK_FREQUENCY_US 1000000*/
#define DELAY_TICK_FREQUENCY_MS 1000 /* = 1kHZ -› milliseconds delay #define DELAY_TICK_FREQUENCY_MS 1000*/

static __IO uint32_t TimingDelay;

extern void delay_ms(uint32_t nTime);
extern void delay_us(uint32_t nTime);

#endif
MDAI вне форума  
Непрочитано 04.01.2018, 12:15  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Довольно странное решение.
Как понимаю, время Вы не отсчитываете в этом случае.
Кстати, можете добавить в функциях ожидание прерывания - до кучи слегка снизите потребление энергии в ожидании.
Вот так:
PHP код:
void delay_us(uint32_t uSecs) {
    
SysTick_Config(SystemCoreClock DELAY_TICK_FREQUENCY_US); // DELAY_TICK_FREQUENCY_US
    
TimingDelay uSecs;
    while (
TimingDelay != 0) {
        
__WFI();
    };

-Alan- вне форума  
Непрочитано 04.01.2018, 12:55  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от -Alan- Посмотреть сообщение
можете добавить в функциях ожидание прерывания - до кучи слегка снизите потребление энергии в ожидании.
Это просто круто!
Сообщение от -Alan- Посмотреть сообщение
Довольно странное решение.
Конкурс "Тупой и ещё тупее"(с) удался.
Кто ещё предложит дырочку в кристалле просверлить?
STM32F0 вне форума  
Непрочитано 06.02.2018, 23:31  
Vov
Прохожий
 
Регистрация: 06.02.2018
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vov на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Порекомендуй что то дельное читабельное,
Vov вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Апгрейд и комплектующие для ноутбуков mikesmith Барахолка электронных компонентов 28 17.05.2023 23:25
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Нужна помощь попеределке asm в Си для AVR Saadov Микроконтроллеры, АЦП, память и т.д 11 01.03.2009 20:56
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


Часовой пояс GMT +4, время: 04:03.


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