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

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

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

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

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

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


 
Опции темы
Непрочитано 10.07.2012, 16:11  
sergeewd
Частый гость
 
Регистрация: 15.01.2009
Сообщений: 17
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sergeewd на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от st__1 Посмотреть сообщение
Только в Target Options/ C/C++ вставил STM32F10X_MD_VL...
и проекты закомпилились. спасибо.
Реклама:
sergeewd вне форума  
Непрочитано 10.07.2012, 16:17  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sergeewd Посмотреть сообщение
и проекты закомпилились.
Ну и ?
Discovery есть ? Прошивай и на RA4 осциллом любуйся...

Треугольник на два канала

Код:
#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)
{
 
	
   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; 10.07.2012 в 16:40.
dosikus вне форума  
Непрочитано 11.07.2012, 10:03  
124bit
Прохожий
 
Регистрация: 28.01.2011
Сообщений: 8
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
124bit на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

void base_speak_timer_func(void)
{
static uint8_t i=31;
i++;
.......
}

Компилирую в последнем yagarto, отлаживую gdb из atollic, все из eclipse.
Запуская в прерывании по обновлению таймера.
При первом запуске переменная инициализируется 255тью вместо 31ого. Причем если инициализировать нулем, то все ок работает...
Кроме этого дальше все ведет себя нормально. Чего такая глупость происходит?
Пасибо
124bit вне форума  
Непрочитано 11.07.2012, 11:18  
Гость
 
Сообщений: n/a
По умолчанию Re: Изучаем STM32 Cortex M3

А если так?
Код:
void base_speak_timer_func(void)
{
uint8_t i=31;
i++;
.......
}
 
Непрочитано 11.07.2012, 12:25  
124bit
Прохожий
 
Регистрация: 28.01.2011
Сообщений: 8
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
124bit на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Я в пятницу вернусь домой и попробую, но обычные переменные вроде нормально инициализировались.
А есть мысли, с чем это связано?
124bit вне форума  
Непрочитано 11.07.2012, 18:57  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

124bit ассемблер для этого куска есть? что там?
Hives вне форума  
Непрочитано 13.07.2012, 14:52  
124bit
Прохожий
 
Регистрация: 28.01.2011
Сообщений: 8
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
124bit на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

вот ассемблер:
base_speak_timer_func:
0800044c: push\t{r7}
0800044e: add\tr7, sp, #0
130 i++;
08000450: movw\tr3, #0
08000454: movt\tr3, #8192\t; 0x2000
08000458: ldrb\tr3, [r3, #0]
0800045a: add.w\tr3, r3, #1
0800045e: uxtb\tr2, r3
08000460: movw\tr3, #0
08000464: movt\tr3, #8192\t; 0x2000
08000468: strb\tr2, [r3, #0]
161 }
0800046a: mov\tsp, r7
0800046c: pop\t{r7}
0800046e: bx\tlr

вот C:
void base_speak_timer_func(void)
{
static uint8_t i=15;
i++;
}

если без static - то инициализируется все норм.
Если static инициализировать 0, то тоже все норм.
Если static инициализировать не 0, то в любом случае после инициализации i=255

что за фигня, понять вообще не могу =(?
Платка - stm32DiscoveryVL.
Последний yagarto
124bit вне форума  
Непрочитано 13.07.2012, 21:00  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

вариант раз - долго копать где настраиваются статики при запуске и искать почему не настроились. читать доки. плакать по форумам

вариант два - смени компилер на пробу. вот что выдал иар, чисто как пример, все прозрачно:

SECTION `.text`:CODE:NOROOT(1)
THUMB
// 283 void base_speak_timer_func (void)
// 284 {
// 285 static uint8_t i=15;
// 286 i++;
base_speak_timer_func:
LDR.N R0,??DataTable18_20
LDRB R1,[R0, #+0]
ADDS R1,R1,#+1
STRB R1,[R0, #+0]
// 287 }
BX LR ;; return

SECTION `.data`: DATA:NOROOT(0)
??i:
DATA
DC8 15
Hives вне форума  
Сказали "Спасибо" Hives
124bit (13.07.2012)
Непрочитано 13.07.2012, 22:34  
124bit
Прохожий
 
Регистрация: 28.01.2011
Сообщений: 8
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
124bit на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

понятно, пасиба.
Выбрал вариант 3 - провел рефакторинг и избавился от этой статической переменной xD
124bit вне форума  
Непрочитано 13.07.2012, 22:35  
sergeewd
Частый гость
 
Регистрация: 15.01.2009
Сообщений: 17
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sergeewd на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
Ну и ?
Discovery есть ? Прошивай и на RA4 осциллом любуйся...

Треугольник на два канала

Код:
#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)
{
 
	
   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;
}
на днях STM32VLDiscovery придет, вот и попробуем.
sergeewd вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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