Например TDA7294

Форум РадиоКот • Просмотр темы - stm32 cubeide два инкремента не совместимы.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 14:30:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 270 ]    , , 3, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 16:08:13 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
tonyk, шутник. Какие ФриРтос с критическими секциями ? Посмотрите на посты человека и оцените его уровень :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 16:31:38 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1055
Рейтинг сообщения: 0
tonyk, шутник. Какие ФриРтос с критическими секциями ? Посмотрите на посты человека и оцените его уровень :)

FreeRTOS только для примера. Важен принцип. Его я и описал выше. Для синхронизации доступа ТС всё равно придётся делать критические секции, иначе будет долго ломать голову с проскакиванием через нуль и винить всех, кроме себя, неграмотного. Понимаю, что Дейкстру тут мало кто читал.

Добавлено after 3 minutes 3 seconds:
FreeRTOS. я не пользуюсь этой системой.А что это такое. ?Регистры знаю немного.

Добавлено after 1 minute 47 seconds:
Я думал меню создать на switch.Или я не так всё понял.Ну я ж не русский.


Ты чё, внатуре, по-русски не_понимашь? Я ж тебе написал:
Цитата:
Мораль сей басни такова: любое изменение переменной должно делаться только в одном потоке, а если нужно делать его из нескольких потоков или прерываний, то операция изменения должна обрамляться критической секцией. Иначе словишь двойной инкремент или декремент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 17:11:55 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Буду изучать ,А насчёт swtch как можно подавить дребезг контактов оператором.?Приведите пример.

Добавлено after 5 minutes 18 seconds:
FreeRTOS как можно подключить к CubeIDE ? И как с ней работать что там за команды.Или операторы.как и с чем её кушать.?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 17:24:09 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ivan dimir писал(а):
А насчёт swtch как можно подавить дребезг контактов оператором.?
Это шедевр :)))
Опертором switch не давят дребезг. Это оператор ветвления. Вы бы почитали, что ли, немного про него. Масса информации в интернете.

ivan dimir писал(а):
FreeRTOS как можно подключить к CubeIDE ? И как с ней работать что там за команды.Или операторы.как и с чем её кушать.?
Не загружайтесь этим. Пока Вам рановато.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 17:58:39 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
ivan dimir, этот друг любит оператор switch, он имел ввиду заменить такого рода код
Спойлер
Код:
if(menu_en==1)
{

}
if(menu_en==2)
{

}
if(menu_en==3)
{

}
на что-то такое
Спойлер
Код:
switch (menu_en){
      case 1 : m_1(); break;
      case 2 : m_2(); break;
     case 3 : m_3(); break;
      default : break;
   } 
    
void m_1(void)
{

}

void m_2(void)
{

}

void m_3(void)
{

}
циферки в case не очень хорошо смотрятся, можно запутаться, можно заменить на что-то вроде такого
Спойлер
Код:
typedef enum{
   m_1,      
   m_2,      
   m_3,      
} display;

display menu_en;

menu_en = m_1;

switch (menu_en){
      case m_1 :    m_1(); break;
      case m_2 :    m_2(); break;
     case m_3 :    m_3(); break;
      default :    break;
}    
    
void m_1(void)
{

}

void m_2(void)
{

}

void m_3(void)
{

}
Под критической секцией он имеет ввиду Atomic block restorate.

А дребезг, предложили очень хороший кусочек кода, в этой теме, второе сообщение.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 18:40:29 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1055
Рейтинг сообщения: 0
ivan dimir писал(а):
А насчёт swtch как можно подавить дребезг контактов оператором.?

Аlex писал(а):
Это шедевр

3.14здец... Вот почему я нифига не понял про дребезг. Я в аXYе, Аlex... После этого я себя таким имбицилом осчусчаю с этими критическими секциями и Дейкстрой...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 19:14:11 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
ivan dimir, я ж писал уже, как избавиться от дребезга: достаточно не проверять состояние кнопки в течение 30..100мс после изменения состояния.
Я приводил ссылки на свой код: там все элементарно. SysTick отсчитывает условные миллисекунды, соответственно, конструкция вида
Код:
uint32_t T0 = 0;
...
if(T0 != Tms){ T0 = Tms; do_something();}

будет запускать функцию не чаще 1 раза в миллисекунду (Tms - глобальное "время").
Если сделать
Код:
if(T0 - Tms > X-1)

конструкция будет выполняться один раз в X миллисекунд. Впихиваешь во все свои конечные автоматы, где нужны задержки, такую конструкцию, и твой код получается неблокирующим.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 19:45:04 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1055
Рейтинг сообщения: 0
Eddy_Em писал(а):
ivan dimir, я ж писал уже, как избавиться от дребезга...

Eddy_Em, пардон меня, не заметил твой пост. Я описал этот же самый алгоритм.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 19:47:25 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em, я за ТС вопрос задам, а это
Код:
do_something();
где взять?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 20:15:28 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Код:
void do_something(){}
Не благодари.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 21:38:45 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
ivan dimir, я ж писал уже, как избавиться от дребезга: достаточно не проверять состояние кнопки в течение 30..100мс после изменения состояния.
Я приводил ссылки на свой код: там все элементарно. SysTick отсчитывает условные миллисекунды, соответственно, конструкция вида
Код:
uint32_t T0 = 0;
...
if(T0 != Tms){ T0 = Tms; do_something();}

будет запускать функцию не чаще 1 раза в миллисекунду (Tms - глобальное "время").
Если сделать
Код:
if(T0 - Tms > X-1)

конструкция будет выполняться один раз в X миллисекунд. Впихиваешь во все свои конечные автоматы, где нужны задержки, такую конструкцию, и твой код получается неблокирующим.

У меня системный таймер занят.Есть 4 таймера.Можно их задействовать?.

А кстати инкремент на нажатие кнопки и декремент на нажатие кнопки.Действуют в серии stm32f103 совсем по другому если в stm32f407 программа работает единственное подвесало.То в этой серии инкремент работает правильно сам ставлю - - .Всё в разнос..Буду рыть дальше.

Добавлено after 1 minute 42 seconds:
А отдельно работают.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Вт янв 18, 2022 21:53:32 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Цитата:
У меня системный таймер занят

Чем? Если ты на нем сделал дебильную функцию delay, то предлагаю более вменяемую реализацию:
Код:
void delay(uint8_t ms){
  uint32_t T = Tms;
  while(Tms - T < (uint32_t)ms){}
}

А волатильную переменную Tms инкрементируй в прерывании SysTick каждую миллисекунду.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 07:47:17 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Цитата:
У меня системный таймер занят

Чем? Если ты на нем сделал дебильную функцию delay, то предлагаю более вменяемую реализацию:
Код:
void delay(uint8_t ms){
  uint32_t T = Tms;
  while(Tms - T < (uint32_t)ms){}
}

А волатильную переменную Tms инкрементируй в прерывании SysTick каждую миллисекунду.

Это не мои функции.А вашу нужно проверить?

Добавлено after 9 hours 43 minutes 26 seconds:
Проблема в плате или в схеме потому что включаю PB4 и PB3 .Значения в минусах идут .А включил PB9 и PB4.Всё в норме кто может объяснить .Почему некоторые пины не можно так использовать контролер идёт в разнос.?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 07:57:12 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пн июл 04, 2016 16:51:22
Сообщений: 196
Откуда: Россия, Омск
Рейтинг сообщения: 0
Проблема в плате или в схеме потому что включаю PB4 и PB3 .Значения в минусах идут .А включил PB9 и PB4.Всё в норме кто может объяснить .Почему некоторые пины не можно так использовать контролер идёт в разнос.?


Наводки на пинах, нет стабильного состояния. Состояние пина хаотично меняется и возникают ложные срабатывания.
Добавьте резисторы-подтяжки к пинам на неактивный уровень (который должен быть, чтобы кнопка не считалась нажатой), либо включите подтяжки на уровне GPIO:
Здесь - слабая подтяжка пинов к нулевому уровню.
Код:
GPIOC->PUPDR = (0x02 << 6) | (0x02 << 8) | (0x02 << 18);

И всегда проверяйте, что переменная переходит через ноль.

*поправил смещения битов


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 09:30:45 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Проблема в плате или в схеме потому что включаю PB4 и PB3 .Значения в минусах идут .А включил PB9 и PB4.Всё в норме кто может объяснить .Почему некоторые пины не можно так использовать контролер идёт в разнос.?


Наводки на пинах, нет стабильного состояния. Состояние пина хаотично меняется и возникают ложные срабатывания.
Добавьте резисторы-подтяжки к пинам на неактивный уровень (который должен быть, чтобы кнопка не считалась нажатой), либо включите подтяжки на уровне GPIO:
Здесь - слабая подтяжка пинов к нулевому уровню.
Код:
GPIOC->PUPDR = (0x02 << 2) | (0x02 << 3) | (0x02 << 8);

И всегда проверяйте, что переменная переходит через ноль.

На плате stm32f103C8t висит SWO шина на которой я прошиваю я посмотрел по схеме а на stm32f407vt такого нет.

Добавлено after 14 minutes 58 seconds:
Код:

/*
* main.c
*
* Created on: 5 груд. 2021 р.
* Author: Admin
*/
#include "main.h"
#include <stdio.h>
#define SYSCLOCK 72000000U
__IO uint32_t tmpreg;
__IO uint32_t SysTick_CNT = 0;
unsigned char menu_lcd;
unsigned short int a;
struct
{
volatile unsigned char a1;
volatile unsigned char a2;
volatile unsigned char b1;
volatile unsigned char b2;
volatile unsigned char c1;
volatile unsigned char c2;
volatile unsigned char d1;
volatile unsigned char d2;
unsigned short int a;
volatile unsigned short int b;
volatile unsigned short int c;
volatile unsigned short int d;
unsigned short int result_a;
unsigned short int result_b;
unsigned short int result_c;
unsigned short int result_d;
}danie;
struct
{
unsigned char menu_btn;
unsigned char menu_lcd;
char buf[50];
char buf1[50];
char buf2[50];
char buf3[50];
char buf4[50];
char buf5[50];
char buf6[50];
char buf7[50];
char buf8[50];
volatile unsigned char flag;
volatile unsigned char flag2;
volatile unsigned short int pauza;
volatile unsigned short int pauza1;
}nastroyki;
void TIM1_UP_IRQHandler(void)
{
//pauza->t1=0;
if(TIM1->SR & TIM_SR_UIF)
{
TIM1->SR &= ~ TIM_SR_UIF;
nastroyki.pauza1++;
}

}
void TIM2_IRQHandler (void)
{
if(TIM2->SR & TIM_SR_UIF)
{
TIM2->SR &= ~ TIM_SR_UIF;
if(nastroyki.flag==1)
{
nastroyki.pauza++;
}



}
}

void SysTick_Handler(void)
{
if(SysTick_CNT > 0) SysTick_CNT--;
}
void init_systimer(void)
{
MODIFY_REG(SysTick->LOAD,SysTick_LOAD_RELOAD_Msk,SYSCLOCK / 1000 - 1);

CLEAR_BIT(SysTick->VAL, SysTick_VAL_CURRENT_Msk);
SET_BIT(SysTick->CTRL, SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);

}

void delay(__IO uint32_t tck)
{
while(tck)
{
tck--;
}
}
//----------
void delay_ms(uint32_t ms)
{
MODIFY_REG(SysTick->VAL,SysTick_VAL_CURRENT_Msk,SYSCLOCK / 1000 - 1);
SysTick_CNT = ms;
while(SysTick_CNT) {}
}
void NMI_Handler(void)
{
if((RCC->CIR & RCC_CIR_CSSF) != 0) // HSE fail
{
RCC->CIR |= RCC_CIR_CSSC; // Clear CSSF flag

}
}
void RCC_init(void);

int main(void)
{
nastroyki.pauza=0;
nastroyki.pauza1=0;
nastroyki.menu_btn=0;
nastroyki.menu_lcd=0;
RCC_init();
init_systimer();
//IWDT_init();
APB_init();
GPIO_init();
timer1_init();
timer2_init();
I2C1_Init();
LCD_ini();
LCD_Clear();
while(1)
{
if((GPIOB->IDR&GPIO_IDR_IDR5)==0)
{
nastroyki.flag=1;
}
if(nastroyki.flag==1&&GPIOB->IDR&GPIO_IDR_IDR5&&nastroyki.pauza>10)
{
nastroyki.flag=0;
nastroyki.pauza=0;
nastroyki.menu_btn++;nastroyki.menu_lcd++;
}
// LCD_SetPos(0,0);
// LCD_String("Bobr_stm32");
switch (nastroyki.menu_btn)
{
case 0:
break;
case 1:
if((GPIOB->IDR&GPIO_IDR_IDR4)==0)
{
if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if (danie.a==4095)
{
danie.a=0;
} // }
danie.a++;
}

}

if((GPIOB->IDR&GPIO_IDR_IDR8)==0)
{

if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if (danie.a==0)
{
danie.a=4095;
} // }
danie.a--;
}
}


break;
case 2:
if((GPIOB->IDR&GPIO_IDR_IDR4)==0)
{

if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if ( danie.b==4095)
{
danie.b=0;
}
danie.b++;
}
}
if((GPIOB->IDR&GPIO_IDR_IDR8)==0)
{

if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if (danie.b==0)
{
danie.b=4095;
} // }
danie.b--;
}

}
break;
case 3:
if((GPIOB->IDR&GPIO_IDR_IDR4)==0)
{
if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if (danie.c ==4095)
{
danie.c=0;
}
danie.c++;
}
}
if((GPIOB->IDR&GPIO_IDR_IDR8)==0)
{
if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if (danie.c==0)
{
danie.c=4095;
} // }
danie.c--;

}
}
break;
case 4:
if((GPIOB->IDR&GPIO_IDR_IDR4)==0)
{
if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if ( danie.d ==4095)
{
danie.d=0;
}
danie.d++;
}
}
if((GPIOB->IDR&GPIO_IDR_IDR8)==0)
{
if(nastroyki.pauza1>3)
{
nastroyki.pauza1=0;
if ( danie.d==0)
{
danie.d=1023;
} // }
danie.d--;
}

}
break;
case 5:
nastroyki.menu_btn=0;
break;
}



switch(nastroyki.menu_lcd)
{
case 0:
LCD_SetPos(0,0);
LCD_String("Bobr_stm32");
break;
case 1: sprintf(nastroyki.buf,"a=%2d ",danie.a);
LCD_SetPos(0,0);
LCD_String(nastroyki.buf);

break;
case 2:
sprintf( nastroyki.buf2,"b=%2d ",danie.b );
LCD_SetPos(0,0);
LCD_String(nastroyki.buf2);
break;
case 3:
sprintf(nastroyki.buf4,"c=%2d ",danie.c );
LCD_SetPos(0,0);
LCD_String(nastroyki.buf4);
break;
case 4:

sprintf(nastroyki.buf6,"d=%2d ",danie.d);
LCD_SetPos(0,0);
LCD_String(nastroyki.buf6);
break;
case 5:
nastroyki.menu_lcd=0;
break;
}
}
}

Вот всё и заработало в таком плане проблеиа решена.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 09:36:59 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пн июл 04, 2016 16:51:22
Сообщений: 196
Откуда: Россия, Омск
Рейтинг сообщения: 0
На плате stm32f103C8t висит SWO шина на которой я прошиваю я посмотрел по схеме а на stm32f407vt такого нет.


Открываете Datasheet на процессор, переходите в раздел 3 - Pinouts ans pin description, находите таблицу 7 - Table 7. STM32F40x pin and ball definitions, ищете по строке SWO. И данная функция находится на пине PB3.
Если не получается использовать вывод трассировки через данный пин, используйте любой USB-UART конвертор и терминал типа того же Putty, и выводите отладочные сообщения в UART. У данного кристалла их до 6 штук.

----------
Чтож. Не буду вас переубеждать, или снова рекомендовать писать код НЕ макарошками, или хотя бы обрабатывать кнопки в функции - это всё не моё дело. Хотя порекомендую хотя бы задуматься об этом, поскольку данный код масштабируется довольно сложно. Как минимум, если возникнет нужда добавить ещё несколько пунктов меню, или поменять их местами, то это может оказаться нетривиальной задачей.

Плюс, вагную предупреждение компилятора на этой строке:
if(nastroyki.flag==1 && GPIOB->IDR & GPIO_IDR_IDR5 && nastroyki.pauza>10)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 11:21:03 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
На плате stm32f103C8t висит SWO шина на которой я прошиваю я посмотрел по схеме а на stm32f407vt такого нет.


Открываете Datasheet на процессор, переходите в раздел 3 - Pinouts ans pin description, находите таблицу 7 - Table 7. STM32F40x pin and ball definitions, ищете по строке SWO. И данная функция находится на пине PB3.
Если не получается использовать вывод трассировки через данный пин, используйте любой USB-UART конвертор и терминал типа того же Putty, и выводите отладочные сообщения в UART. У данного кристалла их до 6 штук.

----------
Чтож. Не буду вас переубеждать, или снова рекомендовать писать код НЕ макарошками, или хотя бы обрабатывать кнопки в функции - это всё не моё дело. Хотя порекомендую хотя бы задуматься об этом, поскольку данный код масштабируется довольно сложно. Как минимум, если возникнет нужда добавить ещё несколько пунктов меню, или поменять их местами, то это может оказаться нетривиальной задачей.

Плюс, вагную предупреждение компилятора на этой строке:
if(nastroyki.flag==1 && GPIOB->IDR & GPIO_IDR_IDR5 && nastroyki.pauza>10)

А чем писать код? И чем вас смущает эта строка.Нажимаю кнопку выставляется флаг.Когда выставляется флаг в обработчике прерываний по таймеру начинает счёт переменная.При отжатии кнопки если флаг установлен 1и посчитало 10 единиц переключается меню. Да при отжатии кнопки флаг как и пауза(тик) устанавливаются в ноль.Этот вариант не проходит когда записуешь в EEPROM.На AVR не проходит.А в чём вопрос.?

Добавлено after 26 minutes 19 seconds:
Покажите хоть пример.Кусочек кода моего .Так как нужно писать .Пожайлуста профи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 11:39:19 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Это не мои функции.

Зачем тогда их использовать, если непонятно, что они делают?

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 11:45:52 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Это не мои функции.

Зачем тогда их использовать, если непонятно, что они делают?

Библиотека дисплея не моя при ней идут функции задержек на системном таймере они использованы для LCD.А программа моя топорная правда.Переношу проект с avr на stm32


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 cubeide два инкремента не совместимы.
СообщениеДобавлено: Ср янв 19, 2022 12:07:28 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Рекомендую индусокод выбросить и начать с нуля писать.
Но для этого понадобится сначала научиться общей культуре программирования. Пока что у тебя выходит адов спагетти-код, в котором ты и сам через год не разберешься!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 270 ]    , , 3, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y