Поиск
Показаны результаты для тегов 'stm32f103c8t6'.
-
Привет! Помогите навести порядок в голове, не могу разобраться с mbed и понять куда двигаться дальше. В идеале мне нужен RTOS с библиотеками, чтобы вещи типа CDC USB Com port и простая работа с TFT дисплеем делалась легко в десяток строк. Посмотрел ролики про MBED - сказка! CDC делается в пару строк, под TFT ILI9341 есть библиотека, плату и TFT заказал на Ali. Когда же плата приехала, оказалось что в mbed 6 с примером из доки она не работает, вроде как для нее (и для ее аналога NUCLEO 103) нет поддержки USB стека. Если зашить пример по ссылке снизу - получаю USB UNKNOWN device. При этом на сайте mbed есть проект с перепиленными библиотеками, https://os.mbed.com/users/hudakz/code/STM32F103C8T6_USBSerial/ но ПОД СТАРЫЙ mbed2 и в 6 версии он не компилится. Т.е. в принципе все должно работать, просто в 6 mbed работа с USB портом ограниченна искусственно. Библиотека под TFT тоже написана под mbed2, страшно подумать что будет при компиляции под 6. Посоветуйте - есть ли вариант получить с mbed то что мне надо, может заказать другую плату? Нужно CDC, TFT, несколько каналов ADC и DAC - в виде PWM или сам по себе. Или идти другим путем? -- Вот пример с CDC под 6 версию. https://os.mbed.com/docs/mbed-os/v6.6/apis/usbserial.html
- 12 ответов
-
- mbed
- stm32f103c8t6
-
(и ещё 2 )
C тегом:
-
stm32f103c8t6 + CAN + Hard Fault
Koteyk0o опубликовал тема в ARM, 32bit
Всем привет Использую stm32f103c8t6 в связке с MCP2551, с другой стороны к нему подключен CAN Shield для Arduino, чтобы ловить пакеты. При включении со стороны STM32 приходят 2 пустых пакета с заголовком (насколько я понимаю) После этого STM32 уходит в Hard Fault, тактирование я вроде бы настроил правильно, кванты времени выставил для скорости 500 кбит Код генерировал в STM32CubeMX, а отладку провожу в Keil uVision5 Честно говоря это мои первые попытки работы с CAN протоколом, да и до этого я с STM32 не работал, но похоже я что-то делаю не так #include "main.h" CAN_HandleTypeDef hcan; void SystemClock_Config(void); static void CAN_Data_Send(void); static void MX_GPIO_Init(void); static void MX_CAN_Init(void); void CAN_Data_Send(void){ CAN_TxHeaderTypeDef Tx_Header; Tx_Header.StdId = 0x201; Tx_Header.IDE = CAN_ID_STD; Tx_Header.RTR = CAN_RTR_DATA; Tx_Header.DLC = 0x08; uint8_t Tx_Data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; HAL_CAN_AddTxMessage(&hcan, &Tx_Header, Tx_Data, (uint32_t *)CAN_TX_MAILBOX0); } int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_CAN_Init(); while (1){ HAL_Delay(500); CAN_Data_Send(); HAL_GPIO_TogglePin(GPIOC, CAN_Error_LED_Pin); } } void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){ Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){ Error_Handler(); } } static void MX_CAN_Init(void){ hcan.Instance = CAN1; hcan.Init.Prescaler = 9; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_4TQ; hcan.Init.TimeSeg2 = CAN_BS2_3TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = ENABLE; hcan.Init.AutoRetransmission = ENABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK){ Error_Handler(); } } static void MX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); HAL_GPIO_WritePin(CAN_Error_LED_GPIO_Port, CAN_Error_LED_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_Output_GPIO_Port, LED_Output_Pin, GPIO_PIN_RESET); GPIO_InitStruct.Pin = CAN_Error_LED_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(CAN_Error_LED_GPIO_Port, &GPIO_InitStruct); GPIO_InitStruct.Pin = Button_1_Pin|Button_2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = LED_Output_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(LED_Output_GPIO_Port, &GPIO_InitStruct); } void Error_Handler(void){ }- 56 ответов
-
- can
- stm32f103c8t6
-
(и ещё 1 )
C тегом:
-
Я с помощью stm32cubemx создал проект . Подключил отладчик ulink2. Он определился, связь тоже работала нормально. Скомпиллировал, загрузил программу, начал ходить по шагам. Но в какой-то момент "выскочил" из отладки. После этого стала постоянно выходить ошибка связи: SWD communication failure. Подскажите, пожалуйста, что делать ? Очень надеюсь на помощь.