Перейти к содержанию

Stm32F051R8T6 Основная Периферия


bardak

Рекомендуемые сообщения

Нужно помочь в написании программа в среде Keil u5. Устройство работает от внутреннего источника тактирования 8МГц. Необходимо настроить базовый таймер для создания задержки в 1мкс.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Скачайте CubeMx, там вся настройка визуальная.

Уважаемый HASL, спасибо за информацию, посмотрел! Но мне хочется понять что я делаю не так без всяких визардов!
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

тогда читайте статьи.

CubeMx вообще то создает проект для Keil-а

Создайте проект и сравните со своим

К тому же нам не известно на каком "Велосипеде" вы ездите.

т.е. каким методом или точнее какими функциями управляете перефирией. Может вы на ASM все делаете

:buba:

Изменено пользователем hasl
Ссылка на комментарий
Поделиться на другие сайты

тогда читайте статьи.

CubeMx вообще то создает проект для Keil-а

Создайте проект и сравните со своим

К тому же нам не известно на каком "Велосипеде" вы ездите.

т.е. каким методом или точнее какими функциями управляете перефирией. Может вы на ASM все делаете

:buba:

Я Вас понял, да, извиняюсь, сейчас все выложу.

#include "stm32f0xx_tim.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_gpio.h"
GPIO_InitTypeDef gpioc;
TIM_TimeBaseInitTypeDef tim3;	  
void GPIOC_init(void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);
gpioc.GPIO_Mode=GPIO_Mode_OUT;
gpioc.GPIO_OType=GPIO_OType_PP;
gpioc.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
gpioc.GPIO_PuPd=GPIO_PuPd_NOPULL;
gpioc.GPIO_Speed=GPIO_Speed_Level_1;
GPIO_Init(GPIOC,&gpioc);
}
void TIM3_init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM3->CR1|=(0<<9)|(0<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1);
tim3.TIM_Prescaler=79+1;
tim3.TIM_Period=65534+1;
TIM_TimeBaseStructInit(&tim3);
TIM_TimeBaseInit(TIM3,&tim3);
TIM_Cmd(TIM3,ENABLE);
TIM3->CR1|=(1<<0);
}
int main(void)
{
GPIOC_init();
TIM3_init();

while(1)
{
 if(TIM3->CNT==10){GPIO_SetBits(GPIOC,GPIO_Pin_8);}
 if(TIM3->CNT==20){GPIO_ResetBits(GPIOC,GPIO_Pin_8);}
}
}

Среда разработки Keil u5. Плата STM32F0DISCOVERY внешнего кварца на STM32F051R8T6 нет, используется внутренний HSI

Ссылка на комментарий
Поделиться на другие сайты

Немного не в тему.

TIM3->CR1|=(0<<9)|(0<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1);

Тут достаточно было написать

TIM3->CR1 = (1<<1);

tim3.TIM_Prescaler=79+1; tim3.TIM_Period=65534+1;

А здесь вместо "+" нужен "-".

Точно не уверен, но вместо точки надо "->"

Изменено пользователем Vitemk
Ссылка на комментарий
Поделиться на другие сайты

Немного не в тему.

TIM3->CR1|=(0<<9)|(0<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1);

Тут достаточно было написать

TIM3->CR1 = (1<<1);

tim3.TIM_Prescaler=79+1; tim3.TIM_Period=65534+1;

А здесь вместо "+" нужен "-".

Точно не уверен, но вместо точки надо "->"

На счет минуса я тоже согласен. Там все верно относительно синтаксиса.

Изменено пользователем gafbich
Ссылка на комментарий
Поделиться на другие сайты

C tim3 да верно, я что-то подумал, что это указатель, оказалось просто структура.

А вот "(0<<x)" считаю бессмысленной записью. Только код загромождает.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

#include "stm32f0xx.h"

#include "stm32f0xx_tim.h"

#include "stm32f0xx_rcc.h"

#include "stm32f0xx_gpio.h"

GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

static uint32_t delay_timer;

void GPIOC_init(void)

{

/* GPIOC Periph clock enable */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

/* Configure PC8 and PC9 in output pushpull mode */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

void TIM_Config(void)

{

/* TIM3 clock enable */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = 48000-1; // (48000-1) - ìë ñåê. (48-1) - ìê ñåê.

TIM_TimeBaseStructure.TIM_Prescaler = 1;

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

/* TIM Interrupts enable */

TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

/* TIM3 enable counter */

TIM_Cmd(TIM3, ENABLE);

/* Enable the TIM3 gloabal Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

int main(void)

{

GPIOC_init();

TIM_Config();

while(1)

{

delay(1);

GPIO_SetBits(GPIOC,GPIO_Pin_8);

delay(1);

GPIO_ResetBits(GPIOC,GPIO_Pin_8);

}

}

void delay(uint32_t delay)

{

delay_timer = delay;

while(delay_timer != 0);

}

void TIM3_IRQHandler(void)

{

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

if(delay_timer != 0) delay_timer--;

}

}

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Lexter.. а чтобы проверить защиту Можно же просто замкнуть транзистор оптопары? Защита быстро срабатывает генерация прекращается
    • У меня в детстве были платы (брак с радиозавода), очень много, не говоря уже о всяких деталюхах, которые отец успел накопить. Проблем не было не в резисторах, не в конденсаторах, не в транзисторах. Мне как новичку хватало всего. Покупать начал лет в 17-18 и то только конденсаторы большой емкости, да транзисторы кой какие.
    • Приветствую братва! Заказал активный фильтр для сабвуфера с регулятором среза и регулятором громкости. Сам фильтр верха срезает, но при дополнительной регулировке среза меняется громкость, а не срез. На слух никакой разницы не слышу. Может срез и регулируется, но одновременно и уровень громкости. Получается, эти оба потенциометра регулируют громкость. Схему приложил, продавец дал. Что можете по ней сказать? Как её работоспособность? И что можно изменить, чтобы регулировался срез? Качество схемы только такое…
    • Хорошо в придачу к мультиметру  купить транзистор-тестер с возможностью измерения  емкости и ESR конденсаторов. Да и других функций у него достаточно.
    • На Али полно всяких наборов из широко применяемых транзисторов, резисторов и конденсаторов разных номиналов, стабилизаторов напряжения, светодиодов и т.п. Удобно и недорого. Беспаечные и под пайку макетки.
    • А монтажные провода? А набор отверток? А бокорезы, в конце концов, пинцеты? Забыли посоветовать?
    • Monica Хорошие вопрос для начинающего! Вот несколько основных радиокомпонентов, которые я бы рекомендовал новичку: Резисторы - это базовый пассивный компонент, который используется для регулировки тока и напряжения в цепи. Выберите набор резисторов с разными номиналами сопротивления. Конденсаторы - еще один основной пассивный компонент, используемый для фильтрации, развязки и других применений. Рассмотрите электролитические, керамические и пленочные конденсаторы. Светодиоды - это простые и полезные активные компоненты, которые можно использовать для индикации и простых схем. Транзисторы - эти активные компоненты являются основой многих электронных схем. Я бы посоветовал начать с биполярных транзисторов. Микроконтроллеры - миниатюрные программируемые компьютеры, которые дают начинающим большие возможности для творчества и экспериментов. Также очень полезно иметь базовые инструменты, такие как мультиметр, паяльник и припой. Начните с этих основных компонентов и постепенно расширяйте свою коллекцию по мере роста знаний и интересов. Желаю успехов в ваших электронных проектах!
×
×
  • Создать...