Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F373CCT6 не запускается кварц 8МГц.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Jerry51
Добрый день!
Собрал плату на STM32F373CCT6, загружаю пример из STM32373C-EVAL_FW_V1.0.0.
А кварцевый генератор не запускается, хотя программа работает и на выходах есть
сигналы. В какую сторону рыть не подскажете?
adnega
Цитата(Jerry51 @ Apr 15 2015, 13:38) *
Добрый день!
Собрал плату на STM32F373CCT6, загружаю пример из STM32373C-EVAL_FW_V1.0.0.
А кварцевый генератор не запускается, хотя программа работает и на выходах есть
сигналы. В какую сторону рыть не подскажете?

Вы уверены, что пример использует кварц?
Свой пример с использованием кварца написать можете?
Jerry51
Вот я писал программу для STM32VLDisеcovery. Она генерила Sin на двух выходах со сдвигом в 120 град.
Код
#include <stm32f37x.h>
#include <stm32f37x_conf.h>
#include <stm32f37x_dac.h>
#include <stm32f37x_dma.h>
#include <stm32f37x_rcc.h>
#include <stm32f37x_tim.h>
#include "stm32f37x_gpio.h"
/* Массив, элементы которого нужно быстро запихивать в DAC чтоб получить синус */

const uint16_t stab1[126] = {
        2048, 2145, 2242, 2339, 2435, 2530, 2624, 2717, 2808, 2897,
        2984, 3069, 3151, 3230, 3307, 3381, 3451, 3518, 3581, 3640,
        3696, 3748, 3795, 3838, 3877, 3911, 3941, 3966, 3986, 4002,
        4013, 4020, 4016, 4008, 3995, 3977, 3954, 3926, 3894,
        3858, 3817, 3772, 3722, 3669, 3611, 3550, 3485, 3416, 3344,
        3269, 3191, 3110, 3027, 2941, 2853, 2763, 2671, 2578, 2483,
        2387, 2291, 2194, 2096, 1999, 1901, 1804, 1708, 1612, 1517,
        1424, 1332, 1242, 1154, 1068, 985, 904, 826, 751, 679,
        610, 545, 484, 426, 373, 323, 278, 237, 201, 169,
        141, 118, 100, 87, 79, 76, 82, 93, 109,
        129, 154, 184, 218, 257, 300, 347, 399, 455, 514,
        577, 644, 714, 788, 865, 944, 1026, 1111, 1198, 1287,
        1378, 1471, 1565, 1660, 1756, 1853, 1950, 2047 };
const uint16_t stab2[126] = {
        3722, 3669, 3611, 3550, 3485, 3416, 3344, 3269, 3191, 3110,
        3027, 2941, 2853, 2763, 2671, 2578, 2483,2387, 2291, 2194,
        2096, 1999, 1901, 1804, 1708, 1612, 1517,1424, 1332, 1242,
        1154, 1068, 985, 904, 826, 751, 679, 610, 545, 484, 426,
        373, 323, 278, 237, 201, 169, 141, 118, 100, 87, 79, 76,
        82, 93, 109, 129, 154, 184, 218, 257, 300, 347, 399, 455, 514,
        577, 644, 714, 788, 865, 944, 1026, 1111, 1198, 1287,
        1378, 1471, 1565, 1660, 1756, 1853, 1950, 2047, 2048,
        2145, 2242, 2339, 2435, 2530, 2624, 2717, 2808, 2897,
        2984, 3069, 3151, 3230, 3307, 3381, 3451, 3518, 3581, 3640,
        3696, 3748, 3795, 3838, 3877, 3911, 3941, 3966, 3986, 4002,
        4013, 4020, 4016, 4008, 3995, 3977, 3954, 3926, 3894,
        3858, 3817, 3772 };
const uint16_t stab3[126] = {
      323, 278, 237, 201, 169, 141, 118, 100, 87, 79, 76,
        82, 93, 109, 129, 154, 184, 218, 257, 300, 347, 399, 455, 514,
        577, 644, 714, 788, 865, 944, 1026, 1111, 1198, 1287,
        1378, 1471, 1565, 1660, 1756, 1853, 1950, 2047, 2048,
        2145, 2242, 2339, 2435, 2530, 2624, 2717, 2808, 2897,
        2984, 3069, 3151, 3230, 3307, 3381, 3451, 3518, 3581, 3640,
        3696, 3748, 3795, 3838, 3877, 3911, 3941, 3966, 3986, 4002,
        4013, 4020, 4016, 4008, 3995, 3977, 3954, 3926, 3894,
        3858, 3817, 3772, 3722, 3669, 3611, 3550, 3485, 3416, 3344, 3269, 3191, 3110,
        3027, 2941, 2853, 2763, 2671, 2578, 2483,2387, 2291, 2194,
        2096, 1999, 1901, 1804, 1708, 1612, 1517,1424, 1332, 1242,
        1154, 1068, 985, 904, 826, 751, 679, 610, 545, 484, 426,
        373};
unsigned char i=0;
        void init_GPIO()
{
    GPIO_InitTypeDef GPIO_InitStructure;
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
    /* Включаем порт А */
  RCC_APB2PeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);// pravka!
  /* Включаем ЦАП */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC1, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC2, ENABLE);
  /* Включаем таймер 6 */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
}

int main(void) {
    
  init_GPIO();
/* turn on MCO */
    RCC_MCOConfig(RCC_MCOSource_PLLCLK_Div2);

  /* Настраиваем ногу ЦАПа */
  //GPIO_InitTypeDef GPIO_InitStructure;


  /* Настраиваем таймер для частоты 400 Гц */
  TIM6->PSC = 1;
  TIM6->ARR = 475;
  TIM6->DIER |= TIM_DIER_UIE; //разрешаем прерывание от таймера
  TIM6->CR1 |= TIM_CR1_CEN; // Начать отсчёт!
  NVIC_EnableIRQ(TIM6_DAC1_IRQn); //Разрешение TIM6_DAC_IRQn прерывания

  /* Включить DAC1 */
  DAC1->CR |= DAC_CR_EN1;
  DAC1->CR |= DAC_CR_EN2;
  DAC2->CR |= DAC_CR_EN1;
  /* Бесконечный цикл */
  while (1)
  {
  }
}

/*Обработчик прерывания от таймера 6 */
void TIM6_DAC_IRQHandler(void) {
  TIM6->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
  DAC1->DHR12R1=stab1[i++]; //Запихиваем в ЦАП очередной элемент массива
  DAC1->DHR12R2=stab2[i++];
    DAC2->DHR12R1=stab3[i++];
  if (i==126) i=0; //Если вывели в ЦАП все 126 значений то начинаем заново
}

Уже подрихтовал под 373й.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.