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

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

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

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

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

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


 
Опции темы
Непрочитано 08.08.2012, 14:15  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Радость Re: stm32f4, asm с чего начать?

Сообщение от dosikus Посмотреть сообщение
Смотрите справку по CMSIS - запустите index.html .
А так же core_cmx.h там есть все для настройки ядра ...

И лучше пользоваться готовыми функциями CMSIS чем городить свое , это все таки не SPL ...
Пример оттуда :

Код:
static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  if(IRQn ‹ 0) {
    SCB-›SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority ‹‹ (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */
  else {
    NVIC-›IP[(uint32_t)(IRQn)] = ((priority ‹‹ (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */
}
Спасибо большое, полезные функции )))
Код:
NVIC_EnableIRQ(EXTI0_IRQn);
NVIC_SetPriority(EXTI0_IRQn,1);
Код:
NVIC-›ISER[0]|=(1‹‹6);//6 settable EXTI0 Line0 interrupt
NVIC-›IP[1]=0xF000;	//установка приоритета 15 для 6-й Position
как оказалось это две идентичные надстройки, только во втором случае пришлось немного рассчитать!
Кстати и на железе все работает)
Реклама:

Последний раз редактировалось sosedi; 08.08.2012 в 14:24.
sosedi вне форума  
Непрочитано 09.08.2012, 15:13  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: stm32f4, asm с чего начать?

И снова непонятки(Вот решил научиться работать с ЦАП-ом, вродеб все как в даташите:
сначала включаю тактирование,
потом выбираю событие для отправки данных,
включаю сам ЦАП,
загружаю в регистр данные для отправки,
ну и произвожу событие для отправки, но ниего не работает(((
Цитата:
//***********DAC****************
RCC-›APB1ENR |= RCC_APB1ENR_DACEN; // вкл такт ЦАП
DAC-›CR |= DAC_CR_TSEL1; // выбор события для отправки данных
// (программное событие SWTRIGR)
DAC-›CR |= DAC_CR_EN1; // вкл. ЦАП 1

DAC-›DHR12R1 = 0xFFF; // загрузка данных в ЦАП1
DAC-›SWTRIGR |= DAC_SWTRIGR_SWTRIG1; // программное события запуска
что не так люди подскажите?
sosedi вне форума  
Непрочитано 09.08.2012, 16:34  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: stm32f4, asm с чего начать?

Софтовый пинок не пробовал и STM32F4 нет .

Вот мой бред(но работающий ) выдранный из SPL с использованием только CMSIS .
STM32VL Discovery .

Код:
#include "stm32f10x.h"



#define DAC_Trigger_T2_TRGO                ((uint32_t)0x00000024)
#define DAC_WaveGeneration_Noise           ((uint32_t)0x00000040)
#define DAC_WaveGeneration_Triangle        ((uint32_t)0x00000080)
#define DAC_TriangleAmplitude_1023         ((uint32_t)0x00000900) 
#define DAC_TriangleAmplitude_2047         ((uint32_t)0x00000A00)
#define DAC_OutputBuffer_Disable           ((uint32_t)0x00000002)



#define DAC_Channel_1                      ((uint32_t)0x00000000)
#define DAC_Channel_2                      ((uint32_t)0x00000010)


#define DAC_Align_12b_R                    ((uint32_t)0x00000000)
#define DAC_Align_12b_L                    ((uint32_t)0x00000004)
#define DAC_Align_8b_R                     ((uint32_t)0x00000008)


/* DHR registers offsets */
#define DHR12R1_Offset             ((uint32_t)0x00000008)
#define DHR12R2_Offset             ((uint32_t)0x00000014)
#define DHR12RD_Offset             ((uint32_t)0x00000020)

/* DOR register offset */
#define DOR_Offset                 ((uint32_t)0x0000002C)

#define TIM_TRGOSource_Update              ((uint16_t)0x0020)



u8 DataCAP;

void Delay(__IO uint32_t nCount);
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);
void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);
	
int main(void)
{
    SystemInit ();
	
   RCC-›APB1ENR |= RCC_APB1ENR_DACEN;
	 RCC-›APB1ENR |= RCC_APB1ENR_TIM2EN;
	
	
	 TIM2-›ARR = 0x0F; 
	 TIM2-›PSC = 0x01;   
	 TIM2-›CR1 = 0;
	 /* Reset the MMS Bits */
  TIM2-›CR2 &= (uint16_t)~((uint16_t)TIM_CR2_MMS);
  /* Select the TRGO source */
  TIM2-›CR2 |=  TIM_TRGOSource_Update;
	
	 
	  DAC-›CR |=(DAC_Trigger_T2_TRGO |DAC_WaveGeneration_Triangle|DAC_TriangleAmplitude  _1023|DAC_OutputBuffer_Disable );
	  DAC-›CR |=((DAC_Trigger_T2_TRGO |DAC_WaveGeneration_Triangle|DAC_TriangleAmplitude  _2047 |DAC_OutputBuffer_Disable )‹‹DAC_Channel_2);
	  DAC-›CR |= DAC_CR_EN1;
	  DAC-›CR |= DAC_CR_EN2;
    TIM2-›CR1 |= TIM_CR1_CEN;
    //DAC_SetChannel1Data(DAC_Align_12b_R, 0x100);
	  DAC_SetDualChannelData(DAC_Align_12b_R, 0x100, 0x100);
while (1)
	{


 
	} 
}


// --------------------------------------------------
void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
//---------------------------------
 void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
{  
  __IO uint32_t tmp = 0;
  
  /* Check the parameters */
  
  tmp = (uint32_t)DAC_BASE; 
  tmp += DHR12R1_Offset + DAC_Align;

  /* Set the DAC channel1 selected data holding register */
  *(__IO uint32_t *) tmp = Data;
}
  
void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)
{
  uint32_t data = 0, tmp = 0;
  
 
  /* Calculate and set dual DAC data holding register value */
  if (DAC_Align == DAC_Align_8b_R)
  {
    data = ((uint32_t)Data2 ‹‹ 8) | Data1; 
  }
  else
  {
    data = ((uint32_t)Data2 ‹‹ 16) | Data1;
  }
  
  tmp = (uint32_t)DAC_BASE;
  tmp += DHR12RD_Offset + DAC_Align;

  /* Set the dual DAC selected data holding register */
  *(__IO uint32_t *)tmp = data;
}
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
sosedi (10.08.2012)
Непрочитано 13.08.2012, 10:51  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Радость Re: stm32f4, asm с чего начать?

Подскажите, а как настроить частоту работы МК?
По идее, по умолчанию должна быть выбрана макс частота, но если завести таймер на 168mHz, то прерывания происходят явно не каждую секунду(
Не пойму, либо я таймер не так настроил либо не та частота стоит!
как выставить опред частоту?

Код:
//***********TIM7***************
    RCC-›APB1ENR |= RCC_APB1ENR_TIM7EN;// тактирование таймера
	TIM7-›PSC = 168000-1;// предделитель
	TIM7-›ARR = 1000;// переполнение
	TIM7-›DIER |= TIM_DIER_UIE; // прерывание по переполнению
	TIM7-›CR1 |= TIM_CR1_CEN;// запуск счета
	NVIC_EnableIRQ(TIM7_IRQn);
sosedi вне форума  
Непрочитано 14.11.2012, 16:52  
HELLEVIL
Частый гость
 
Регистрация: 19.05.2012
Сообщений: 25
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
HELLEVIL на пути к лучшему
По умолчанию Re: stm32f4, asm с чего начать?

Сообщение от sosedi Посмотреть сообщение
Всем привет! Люди добрые подскажите с чего начать?
Раньше программировал pic16 и 18 на asm.Теперь стоит задача изучить arm-кие МК, и вот который день долблюсь, не могу понять, даже, как зажечь светодиод.
Имеется отладочная плата STM32F4DISCOVERY.Для начала, хочу зажечь светодиод хотябы на С. Согласно datasheet stm32f4, первым делом я подключаю библиотеки и включаю тактирование порта, в моем случае GPIOC:
Код:
RCC-›AHB1ENR |= RCC_AHB1Periph_GPIOC;
потом устанавливаю порт на выход:
Код:
 /*   These bits are written by software to configure the I/O direction mode.
    00: Input (reset state)
    01: General purpose output mode
    10: Alternate function mode
    11: Analog mode*/
GPIOC-›MODER |=0x55555555;
далее задаю частоту, к примеру 50MHz :
Код:
    /*    These bits are written by software to configure the I/O output speed.
        00: 2 MHz Low speed
        01: 25 MHz Medium speed
        10: 50 MHz Fast speed
        11: 100 MHz High speed on 30 pF (80 MHz Output max speed on 15 pF)*/
    GPIOC-›OSPEEDR |=0xFFFF;
GPIOC-›OSPEEDR |=0xFFFF;
ну и высокий уровень:
GPIOC-›ODR |=0xFFFFFFFF;

не могу понять что я не так делаю???
Посоветуйте какое ПО(бесплатное) выбрать, на данный момент я остановился на CooCox!

Облазил весь нэт, ни одной программы на asm-e под STM ни нашел(( как хоть на нем писать. Может есть у когониб примеры на assemblere? буду очень благодарен)

Если задачей еще интересуетесь в плане asm то попробую помочь чем смогу.

Последний раз редактировалось HELLEVIL; 14.11.2012 в 16:57.
HELLEVIL вне форума  
Сказали "Спасибо" HELLEVIL
STM32F4 (05.12.2012)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С чего начать? ourlive Электроника - это просто 179 17.04.2012 23:02
С чего начать? nickdkn Электроника - это просто 9 12.07.2011 20:13
С чего начать? Митрофаныч Микроконтроллеры, АЦП, память и т.д 17 03.10.2010 21:18
PICи - с чего начать? Alexxx2005 Микроконтроллеры, АЦП, память и т.д 11 27.05.2007 01:37
C чего начать? melkij Микроконтроллеры, АЦП, память и т.д 11 21.08.2006 13:39


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


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