Jump to content
Sign in to follow this  
koteika

STM32 HAL подтяжка ноги

Recommended Posts

Здравствуйте товарищи :beer:  не выходит включить подтяжку ноги в кейле с использованием библиотеки HAL(пробовал на дискавери и Ф103), причем в кокосе проблем нет :cry:  уже варенный, помогите пожалуйста - укажите где ошибка. не ругайте сильно с СТМ знакомлюсь только

З.Ы. тут еще код для АЦП но он работает

#include "stm32f1xx_hal.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
volatile uint16_t ADC_Data[4];
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_ADC1_Init(void);

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

int main(void)
{

  /* USER CODE BEGIN 1 */
    //float u;
  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC1_Init();

  /* USER CODE BEGIN 2 */
    HAL_ADC_Start_DMA(&hadc1, (uint32_t*) &ADC_Data, 4);
  /* USER CODE END 2 */
    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_SET);
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  
    //u=((float)ADC_Data[0])*3/65356;
        
    /* USER CODE END WHILE */
    
  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

/** System Clock Configuration
*/
void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_PeriphCLKInitTypeDef PeriphClkInit;

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);

  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;
  HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  /* SysTick_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

/* ADC1 init function */
void MX_ADC1_Init(void)
{

  ADC_ChannelConfTypeDef sConfig;

    /**Common config 
    */
  hadc1.Instance = ADC1;
  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.DataAlign = ADC_DATAALIGN_LEFT;
  hadc1.Init.NbrOfConversion = 4;
  HAL_ADC_Init(&hadc1);

    /**Configure Regular Channel 
    */
  sConfig.Channel = ADC_CHANNEL_10;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

    /**Configure Regular Channel 
    */
  sConfig.Channel = ADC_CHANNEL_11;
  sConfig.Rank = 2;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

    /**Configure Regular Channel 
    */
  sConfig.Channel = ADC_CHANNEL_12;
  sConfig.Rank = 3;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

    /**Configure Regular Channel 
    */
  sConfig.Channel = ADC_CHANNEL_13;
  sConfig.Rank = 4;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

}

/** 
  * Enable DMA controller clock
  */
void MX_DMA_Init(void) 
{
  /* DMA controller clock enable */
  __HAL_RCC_DMA1_CLK_ENABLE();

  /* DMA interrupt init */
  /* DMA1_Channel1_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);

}

/** Pinout Configuration
*/
void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO;
    /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_RCC_GPIOE_CLK_ENABLE();
    
    
    GPIO.Pin = GPIO_PIN_0;
  GPIO.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO);
    

  
    

}

Share this post


Link to post
Share on other sites
1 час назад, koteika сказал:

GPIO.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO.Pull = GPIO_NOPULL;

если нога выход и настронена на режим пуш-пулл, то никакой подтяжки включить не получится. Такого режима просто нет. Можно подтянуть только если нога вход. Не устали голову греть над несуществующей проблемой?

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Думаю, что не меньше чем по железному  китайскому, см. рисунок. Паяет нормально, а жала ничего не стоят и легко заменяются. ЗЫ: В кругляке 5,5 мм  такую резьбу дома нарезать проблематично. А в 6-ти граннике 5,5 мм именно грани спасают от сворачивания и лопания заготовки. Но нарезать, всё равно, желательно в патроне сверлильного станка, вращая патрон с метчиком ( или заготовкой) вручную, иначе высока вероятность брака. Если бы в Чипе-Дипе были круглые латунные втулки 6 мм., то проблем было бы поменьше.
    • Решил собрать эту схему,можно применить в качестве катушки заводские дросселя? Спс Резистор R6, на 10к,в схеме ошибка!!!
    • диод на разряд транзисторов - что-бы его ускорить -от помех при переключении стоят резисторы между затвором и истоком - как то так, а вторичку пока не делаю -хочу до конца разобраться с трансформатором ,с зашитой -потом отдельно шим соберу -как изначально хотел .да и вы вот вариант печатки подогнали) в проге норм зашита работала - да и индейцы с своей ямахе так глушат) там есть еще прикол с софт стартом на ней - но при этом идут экстратоки - заморочили - имхо ,проше тогда на шиме это все делать.
    • А зачем в затворы диоды?) Что бы ускорить выброс тока при закрытии и помех больше было? Что бы от помех тиристор защиты при каждом включении срабатывал? Что-то я не понял, а выпрямитель с дросселями куда дел?) Жду, когда запустишь, надеюсь защита будет работать хорошо
    • жесть, как теперь жить то дальше) осталось по мелочи - завтра попробую подорвать) спасибо -как ориентир буду знать.
    • Брат! Я в тебя верю! Тебя ждет ошеломительный успех!   Что делает тема в тематическом топике? Тут же троллинг чистой воды. А на конденсаторе может. То бишь напряжение постоянно, а ток переменный. В индуктивности наоборот. Я сейчас заморачиваюсь батарейным питанием IoT устройств, так вот токи утечки через конденсаторы - для меня это важно. Если напряжение подано, то ток уже течет. Вопрос только в его величине. автора данного правила можно озвучить.
    • Вот я поправил Убрал конденсатор в питании, вместо него старое доброе самопитание. И твою защиту даже нарисовал  Одна перемычка только... Никаких тебе злых петель, и конденсатор прямо у транзисторов, и резистор токовый убрал - конденсатор вместо него. И резистор на тиристор добавил я, иначе будет срабатывать даже от мобильного телефона рядом звонящего. И вообще, вместо двух сетевых конденсаторов на 200 В сюда отлично подойдёт один на 400 В. С ним можно значительно улучшить гармонию элементов и дорожек.... Хотя, если планировал СМД ставить, наверное проще всё на СМД было сделать... Типа такого, мой "микро" вариант с отдельной платой:
×
×
  • Create New...