Кто любит RISC в жизни, заходим, не стесняемся.
Ср дек 04, 2019 17:43:17
Доброго времени суток!
Давно прикупил себе Stm32F3discovery, но так и не начал изучать ее. А вот сейчас возникла необходимость подать на одну деталюшку меандр. Из доступного только эта плата. Когда-то возился с AVR-ми и немного ориентируюсь в коде. Нашел в интернете замечательный пример работы со светодиодами на данной платке и интуитивно переделал код автора статьи под свои нужды. Меандр то я на выходе получил, но почему-то он нестабилен (теряет красивую форму) и амлитудой всего 0.4 вольта. Я ожидал всеже получить 3.3 вольта на выходе и не очень понимаю почему так получилось. Объясните пожалуйста как поправить код, чтоб получить четкий 3.3 вольтовый меандр на выходе.
- Код:
/******************************************************/
#include "stm32f30x_gpio.h"
#include "stm32f30x_rcc.h"
#include "stm32f30x.h"
/******************************************************/
/******************************************************/
#define DELAY_TIME 5000
/******************************************************/
GPIO_InitTypeDef gpio;
unsigned int i;
/******************************************************/
/******************************************************/
void simpleDelay(unsigned int delayTime)
{
for (i = 0; i < delayTime; i++);
}
/******************************************************/
/******************************************************/
void initAll()
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOE, &gpio);
}
/******************************************************/
/******************************************************/
int main()
{
initAll();
while(1)
{
GPIO_SetBits(GPIOE, GPIO_Pin_0);
simpleDelay(DELAY_TIME);
GPIO_ResetBits(GPIOE, GPIO_Pin_0);
simpleDelay(DELAY_TIME);
}
}
/******************************************************/
Ср дек 04, 2019 17:49:38
10 гц тоже 0.4V? Замеры на голых ногах ничто не подключено?
Ср дек 04, 2019 18:02:07
10 гц тоже 0.4V? Замеры на голых ногах ничто не подключено?
Ничего не подключено, пустая плата. Смотрел осциллографом С1-65А.
Чт дек 05, 2019 12:37:23
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
Чт дек 05, 2019 14:26:05
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
Попробовал. Выдает ошибку "identifier "GPIO_Mode_OUT_PP" is undefined".
Чт дек 05, 2019 14:32:04
- Код:
void initAll()
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);
gpio.GPIO_Pin = GPIO_Pin_0;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &gpio);
}
Чт дек 05, 2019 14:41:58
Мурик, попробовал. Ошибок нет, но импульсы по 0.4-0.5 вольта.
Чт дек 05, 2019 14:51:58
Попробуйте другой выход. PE0 подключен к выходу прерывания от гироскопа.
Чт дек 05, 2019 16:45:07
Попробуйте другой выход. PE0 подключен к выходу прерывания от гироскопа.
Пробовал PE1 и PE5. Результат тот же. 0.4-0.5 вольт меандр на выходе.
Чт дек 05, 2019 17:18:06
Pe5 и Pe1 тоже используются, зачем было надо их пробовать?
Пункт 6.12 Extension connectors страница 22 - смотрите и берите свободный и проверяйте по даташиту, что он может работать в пуш-пулл.
Чт дек 05, 2019 18:35:12
Pe5 и Pe1 тоже используются, зачем было надо их пробовать?
en.DM00063382.pdf
Пункт 6.12 Extension connectors страница 22 - смотрите и берите свободный и проверяйте по даташиту, что он может работать в пуш-пулл.
Спасибо! По даташиту нашел свободный вывод PE6 и импульсы стали 3-вольтовыми. Но не проходит и минуты как генерация импульсов почему-то прекращается. Не могу понять почему...
Я извиняюсь конечно, но я не знаю как проверить работает ли порт в пуш пул режиме.
Чт дек 05, 2019 19:10:43
жесть
ну ладно я неуч, но почему грамотные спокойно смотрят на
" for (...)" - задержку и это на "не бедном" камне.
у меня нет такого камня - выложил бы инит на таймер.
ядро спит таймер идет
Чт дек 05, 2019 19:31:29
a797945, ну, я код и не смотрел, он на напряжение вряд ли влиял )
как проверить работает ли порт в пуш пул режим
как вариант: скачиваете даташит на мк и смотрите в нем описание функционала портов.
Вариант удобнее: скачиваете STM32CubeMX и создаете проект на основе именно Вашей дискавери-плате
Последний раз редактировалось
BlackKilkennyCat Чт дек 05, 2019 19:49:04, всего редактировалось 2 раз(а).
Чт дек 05, 2019 19:45:35
BlackKilkennyCat, Щас тебя "программисты" порвут
Чт дек 05, 2019 19:48:32
240265, а не страшно. видали мы этих программистов, к каждой фигне интерфейсы пишущих
Чт дек 05, 2019 20:06:01
BlackKilkennyCat, спасибо! С амплитудой разобрался. Но попутно возникла еще проблемка. Почему то где-то через 45 секунд у меня гаснет светодиод LD1(power) и пропадает генерация. Не могу понять почему так происходит...
Чт дек 05, 2019 20:13:41
Jebocom, мне сложно ответить не видя полного проекта.
а вообще, если всё это дело запитывается от усб и гаснет именно светодиод PWR, то логично бы проверить мультиметром наличие напряжения
Чт дек 05, 2019 20:38:29
Да уж
...Очевидные вещи иногда сложно заметить. Я гонял авторскую программу (с которой сдирал код), запитываясь от USB нетбука и генерация на светодиодах не прекращалась. После того как я переделал программу под свои нужды я запитался от powerbank и генерация прекращалась через 30 секунд (я засек). Судя по всему powerbank оценивал потребление тока и наверное маленькую платку он за потребителя не считал и отключался через 30 секунд. А я было подумал что это программное... Спасибо
BlackKilkennyCat за меткие советы и помощь!
Пт дек 06, 2019 02:40:15
Jebocom, это что... я недавно запитался от усб и делаю простенькую штуку - анализирую положение и выводы потенциометра (простенький прибор для автомобильной диагностики). А показания скачут как угорелые. Думаю "ну ладно, мож дорожка протерлась или еще что, потом проверю", ну и как-то забылось... собрал, запитал от батарейки - всё идеально.
Оказалось, что наводки с усб были такие, что сбивали опорное напряжение, которое я же собственными руками указал брать с основного питания...
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.