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

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

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

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

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

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


 
Опции темы
Непрочитано 14.05.2014, 12:44  
MDAI
Частый гость
 
Регистрация: 14.05.2014
Адрес: Новосибирск
Сообщений: 11
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MDAI на пути к лучшему
По умолчанию Нужна функция delay на таймере для stm32f303

Здравствуйте. Нужна функция delay на таймере для stm32f303. Спасибо!
Реклама:
MDAI вне форума  
Непрочитано 14.05.2014, 12:56  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Я делаю так
Код:
/**************************************************  **********************
*																		*
*		   Драйвер базового таймера STM32F4xx (TIM6 & TIM7).			*
*						Универсальный вариант.							*
*							Версия:	 0.1.								*
*																		*
* Файл: drvTimerBase.с	Дата создания: 11.09.2012г.						*
*				  Последние изменения: 11.09.2012г.						*
* Сапего Александр Леонидович. (sapegoal@mail.ru)						*
*																		*
*																		*
**************************************************  **********************/

#include "stm32f4xx.h"
#include "stdint.h"
#include "drvTimerBase.h"
#include "main.h"

// Инициализировать используемый таймер
void InitTimerBase(TIM_TypeDef *TIM)
{
  TIM-›CR1 = 1;				// Разрешить работу таймера
  TIM-›PSC = 0;				// На основной частоте
}

// Ждать tact тактов процессора
void DelayTacts(TIM_TypeDef *TIM, uint32_t tact)
{
  int32_t	tmp, wt;
  
  tmp = TIM-›CNT;
  for(;;)
  {
	wt = TIM-›CNT - tmp;
	if(wt‹0) wt += 0x10000;
	if(wt›tact) break;
  }
}


// Ждать mks микросекунд
void DelayMks(TIM_TypeDef *TIM, uint32_t mks)
{
  do
  {
	DelayTacts(TIM,NANOSEC(1000));
  }while(mks--);
}


// Ждать ms	милисекунд
void DelayMs(TIM_TypeDef *TIM, uint32_t ms)
{
  do
  {
	DelayMks(TIM,1000);
  }while(ms--);
}
SasaVitebsk вне форума  
Непрочитано 14.05.2014, 13:51  
MDAI
Частый гость
 
Регистрация: 14.05.2014
Адрес: Новосибирск
Сообщений: 11
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MDAI на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

SasaVitebsk, А можете выложить полный код? не совсем понятно что такое NANOSEC(1000).
MDAI вне форума  
Непрочитано 14.05.2014, 15:02  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

пикосекундные задержки не забудьте
Easyrider83 вне форума  
Непрочитано 14.05.2014, 19:17  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Код:
// Макросы для задержек
#define NANOSEC(DATA)		((uint32_t)((DATA-20)/TCLK_SMALLWAIT))		// Ориентировочная задержка в нсек
// Ждать s01*0.1 секунд
#define  Delay01(TIM,s01)	DelayMs(TIM,s01*100)
Код:
// Базовый таймер, используемый для микрозадержек
#define	TIM_SMALLWAIT			TIM6
пример
Код:
	ADC_CS_OFF;										// отключить выборку АЦП
	DelayMs(TIM_SMALLWAIT,1);
	ADC_CS_ON;										// Выбрать АЦП
	vSetCh1UniAD7192();
	ADC_CS_OFF;										// отключить выборку АЦП
	DelayTacts(TIM_SMALLWAIT,NANOSEC(130));
	ADC_CS_ON;										// Выбрать АЦП
	vSetCh1UniAD7192();
	ADCPIN_RDY;										// Переключить пин на готовность
	ADCPIN_RDY_INTCLR;								// сбросить флаги
	ADCPIN_RDY_INTEN;								// Разрешить прерывание по RDY
SasaVitebsk вне форума  
Непрочитано 14.05.2014, 19:27  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

И для кого ARM таймер SysTick делала - непонятно.

кста: для подсчета тактов у камня есть спец фича, незачем таймер гробить
Код:
// включение выдачи счетчика тактов процессора
void InitDwt (void)
{
SCB_DEMCR |= 0x01000000;
DWT_CYCCNT = 0;
DWT_CONTROL |= 1;
}
//==================================================  ==============================

// сброс счетчика тактов процессора
void ClearDwt (void)
{
DWT_CYCCNT = 0;
}
//==================================================  ==============================

// считывание счетчика тактов процессора
u32 GetDwt (void)
{
return DWT_CYCCNT;
}
//==================================================  ==============================

Последний раз редактировалось Hives; 14.05.2014 в 19:36.
Hives вне форума  
Сказали "Спасибо" Hives
SasaVitebsk (15.05.2014)
Непрочитано 15.05.2014, 02:18  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от Hives Посмотреть сообщение
кста: для подсчета тактов у камня есть спец фича, незачем таймер гробить
Приучайся писать по-человечески!
Код:
void InitDwt (void)
{
    CoreDebug-›DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
    DWT-›CYCCNT       = 0;
    DWT-›CTRL        |= DWT_CTRL_CYCCNTENA_Msk;
}
Что это ещё за хрень SCB_DEMCR, DWT_CYCCNT и DWT_CONTROL ? Чему соответствует?
STM32F0 вне форума  
Непрочитано 15.05.2014, 07:11  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Сообщение от Hives Посмотреть сообщение
И для кого ARM таймер SysTick делала - непонятно.
Лично мне пока не понятно, для кого проектировщики ещё первых 80хх-процессоров придумали прерывания
niXto вне форума  
Непрочитано 15.05.2014, 08:45  
MDAI
Частый гость
 
Регистрация: 14.05.2014
Адрес: Новосибирск
Сообщений: 11
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MDAI на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Разобрался. Огромное всем спасибо за помощь!
MDAI вне форума  
Непрочитано 15.05.2014, 09:46  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Нужна функция delay на таймере для stm32f303

Прерывания, для того чтобы отмерить задержку ненужны. Таймеров у меня в камне 17 штук. С SysTick, если честно, не разбирался. У меня там FreeRTOS его использует, поэтому не стал ковыряться. Как всегда времени не хватает.
Hives, спасибо за инфу. Буду использовать.
Переписывание драйверов несложная штука.
SasaVitebsk вне форума  
 

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

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

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, время: 20:30.


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