Jump to content

    

jenya7

Участник
  • Content Count

    2976
  • Joined

  • Last visited

Community Reputation

0 Обычный

About jenya7

  • Rank
    Гуру

Recent Profile Visitors

7142 profile views
  1. ну это для крутых мужей. а мне вот результат ф-ции нужен в процессе отладки. :))
  2. скачал последнюю версию 2020. посмотрим что C-STAT скажет на нее. в BLE стаке от ST тоже куча предупреждений но туда я уж точно не полезу.
  3. а что делать с FATFS? он там выдаёт кучу предупреждений. я что буду меряться пипетками с дядей Ченом?
  4. у меня проверка перед инкрементом if(argc >= 3) break;
  5. Принял Соломоново решение - пока почистить High Severity их не так много. уперся в одно где не понимаю что он хочет Array `args' 1st subscript interval [0,3] may be out of bounds [0,2] int StrToDateInt(char * date_str) { int date = 0; uint32_t argc = 0; char* args[3]={ NULL, NULL, NULL}; uint8_t year, month, day; //dd/mm/yy if (strlen(date_str) != 8) return -1; args[argc] = strtok(date_str, "/"); while (args[argc] != NULL) //!!! { if(argc >= 3) break; args[++argc] = strtok (NULL, "/"); //!!! } if (argc < 3) return -1; ................. я же вроде проверяю argc.
  6. ну в данном случае да, это касается пользовательского скрипта. тут не простое решение. хочеться чтоб система была крутая :)) чай не дети :))
  7. ну ничё так :)) проблема выбрать delta. пользователь может захотеть IF SENS0==25.5 THEN..... а может и так IF SENS0==25.55 THEN.....
  8. я могу конечно округлять float но это много накладных расходов. проблема однако.
  9. для компайлера это даже не warnings - Total number of warnings: 0.
  10. сравнение float это проблема, я уже встречался с этим. но что делать когда очень хочеться надо?
  11. я понимаю что неспроста, вопрос заморачиваться или нет? компайлер то компилирует без предупреждений, с его стороны все хорошо.
  12. При обычной компиляции все чики-пуки - no warnings. И тут я решил запустить C-STAT analysis. Он мне вывалил предупреждений - мама не горюй. например float val = -1; if (val != -1) { //do something } Comparison with a float using == or != ну тут я могу сделать кастинг if ((int)val != -1) но есть случай где я не могу этого сделать static uint32_t ProcessCompare(float l, float r, uint8_t oper) { switch (oper) { case OP_EQ: return (l == r); case OP_GT: return (l > r); case OP_LT: return (l < r); case OP_GE: return (l >= r); case OP_LE: return (l <= r); case OP_NE: return (l != r); default : return 0; } } вопрос - не обращать внимание или все таки устранять предупреждения? сам компайлер не ругается. или это такой маркетинговый ход - хочеш честную компиляцию - купи лайсенс и получи C-STAT analysis?
  13. но это же константа. константу всегда можно выбросить, не?
  14. void initPid() { pid_requested_position=encoder_count; pid_integrated_error = 0; pid_prev_position_error =0; //TIM3 used for pid loop timing. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = 72; //1MHz counter TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = 250; //4kHz update interval TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); TIM_Cmd(TIM3, ENABLE); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } как? в выходной PWM добавляется dt?