I'm trying to port GRBL 1.1 to the STM32F746 chip. Tell me the solution, thanks.

Committer:
Sergunb
Date:
Mon Sep 04 12:03:42 2017 +0000
Revision:
0:f1834a63f7c1
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sergunb 0:f1834a63f7c1 1 /******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
Sergunb 0:f1834a63f7c1 2 * File Name : hw_config.c
Sergunb 0:f1834a63f7c1 3 * Author : MCD Application Team
Sergunb 0:f1834a63f7c1 4 * Version : V3.3.0
Sergunb 0:f1834a63f7c1 5 * Date : 21-March-2011
Sergunb 0:f1834a63f7c1 6 * Description : Hardware Configuration & Setup
Sergunb 0:f1834a63f7c1 7 ********************************************************************************
Sergunb 0:f1834a63f7c1 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Sergunb 0:f1834a63f7c1 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Sergunb 0:f1834a63f7c1 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Sergunb 0:f1834a63f7c1 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Sergunb 0:f1834a63f7c1 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Sergunb 0:f1834a63f7c1 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Sergunb 0:f1834a63f7c1 14 *******************************************************************************/
Sergunb 0:f1834a63f7c1 15
Sergunb 0:f1834a63f7c1 16 #include "stm32f10x_it.h"
Sergunb 0:f1834a63f7c1 17
Sergunb 0:f1834a63f7c1 18 #include "usb_lib.h"
Sergunb 0:f1834a63f7c1 19 #include "usb_prop.h"
Sergunb 0:f1834a63f7c1 20 #include "usb_desc.h"
Sergunb 0:f1834a63f7c1 21 #include "hw_config.h"
Sergunb 0:f1834a63f7c1 22 #include "platform_config.h"
Sergunb 0:f1834a63f7c1 23 #include "usb_pwr.h"
Sergunb 0:f1834a63f7c1 24 #include "stm32f10x_rcc.h"
Sergunb 0:f1834a63f7c1 25 #include "misc.h"
Sergunb 0:f1834a63f7c1 26
Sergunb 0:f1834a63f7c1 27 ErrorStatus HSEStartUpStatus;
Sergunb 0:f1834a63f7c1 28
Sergunb 0:f1834a63f7c1 29 static void IntToUnicode(uint32_t value, uint8_t *pbuf, uint8_t len);
Sergunb 0:f1834a63f7c1 30
Sergunb 0:f1834a63f7c1 31 /*******************************************************************************
Sergunb 0:f1834a63f7c1 32 * Description : Configures Main system clocks & power
Sergunb 0:f1834a63f7c1 33 *******************************************************************************/
Sergunb 0:f1834a63f7c1 34 void Set_System(void)
Sergunb 0:f1834a63f7c1 35 {
Sergunb 0:f1834a63f7c1 36 }
Sergunb 0:f1834a63f7c1 37
Sergunb 0:f1834a63f7c1 38 /*******************************************************************************
Sergunb 0:f1834a63f7c1 39 * Description : Configures USB Clock input (48MHz)
Sergunb 0:f1834a63f7c1 40 *******************************************************************************/
Sergunb 0:f1834a63f7c1 41 void Set_USBClock(void)
Sergunb 0:f1834a63f7c1 42 {
Sergunb 0:f1834a63f7c1 43 /* Select USBCLK source */
Sergunb 0:f1834a63f7c1 44 RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);
Sergunb 0:f1834a63f7c1 45
Sergunb 0:f1834a63f7c1 46 /* Enable the USB clock */
Sergunb 0:f1834a63f7c1 47 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
Sergunb 0:f1834a63f7c1 48 }
Sergunb 0:f1834a63f7c1 49
Sergunb 0:f1834a63f7c1 50 /*******************************************************************************
Sergunb 0:f1834a63f7c1 51 * Description : Power-off system clocks and power while entering suspend mode
Sergunb 0:f1834a63f7c1 52 *******************************************************************************/
Sergunb 0:f1834a63f7c1 53 void Enter_LowPowerMode(void)
Sergunb 0:f1834a63f7c1 54 {
Sergunb 0:f1834a63f7c1 55 /* Set the device state to suspend */
Sergunb 0:f1834a63f7c1 56 bDeviceState = SUSPENDED;
Sergunb 0:f1834a63f7c1 57 }
Sergunb 0:f1834a63f7c1 58
Sergunb 0:f1834a63f7c1 59 /*******************************************************************************
Sergunb 0:f1834a63f7c1 60 * Description : Restores system clocks and power while exiting suspend mode
Sergunb 0:f1834a63f7c1 61 *******************************************************************************/
Sergunb 0:f1834a63f7c1 62 void Leave_LowPowerMode(void)
Sergunb 0:f1834a63f7c1 63 {
Sergunb 0:f1834a63f7c1 64 DEVICE_INFO *pInfo = &Device_Info;
Sergunb 0:f1834a63f7c1 65
Sergunb 0:f1834a63f7c1 66 /* Set the device state to the correct state */
Sergunb 0:f1834a63f7c1 67 if (pInfo->Current_Configuration != 0)
Sergunb 0:f1834a63f7c1 68 {
Sergunb 0:f1834a63f7c1 69 /* Device configured */
Sergunb 0:f1834a63f7c1 70 bDeviceState = CONFIGURED;
Sergunb 0:f1834a63f7c1 71 }
Sergunb 0:f1834a63f7c1 72 else
Sergunb 0:f1834a63f7c1 73 {
Sergunb 0:f1834a63f7c1 74 bDeviceState = ATTACHED;
Sergunb 0:f1834a63f7c1 75 }
Sergunb 0:f1834a63f7c1 76 }
Sergunb 0:f1834a63f7c1 77
Sergunb 0:f1834a63f7c1 78 /*******************************************************************************
Sergunb 0:f1834a63f7c1 79 * Description : Configures the USB interrupts
Sergunb 0:f1834a63f7c1 80 *******************************************************************************/
Sergunb 0:f1834a63f7c1 81 void USB_Interrupts_Config(void)
Sergunb 0:f1834a63f7c1 82 {
Sergunb 0:f1834a63f7c1 83 NVIC_InitTypeDef NVIC_InitStructure;
Sergunb 0:f1834a63f7c1 84
Sergunb 0:f1834a63f7c1 85 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
Sergunb 0:f1834a63f7c1 86
Sergunb 0:f1834a63f7c1 87 NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
Sergunb 0:f1834a63f7c1 88 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
Sergunb 0:f1834a63f7c1 89 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
Sergunb 0:f1834a63f7c1 90 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
Sergunb 0:f1834a63f7c1 91 NVIC_Init(&NVIC_InitStructure);
Sergunb 0:f1834a63f7c1 92 }
Sergunb 0:f1834a63f7c1 93
Sergunb 0:f1834a63f7c1 94 /*******************************************************************************
Sergunb 0:f1834a63f7c1 95 * Description : Software Connection/Disconnection of USB Cable
Sergunb 0:f1834a63f7c1 96 *******************************************************************************/
Sergunb 0:f1834a63f7c1 97 void USB_Cable_Config(FunctionalState NewState)
Sergunb 0:f1834a63f7c1 98 {
Sergunb 0:f1834a63f7c1 99 }
Sergunb 0:f1834a63f7c1 100
Sergunb 0:f1834a63f7c1 101 /*******************************************************************************
Sergunb 0:f1834a63f7c1 102 * Description : Create the serial number string descriptor.
Sergunb 0:f1834a63f7c1 103 *******************************************************************************/
Sergunb 0:f1834a63f7c1 104 void Get_SerialNum(void)
Sergunb 0:f1834a63f7c1 105 {
Sergunb 0:f1834a63f7c1 106 uint32_t Device_Serial0, Device_Serial1, Device_Serial2;
Sergunb 0:f1834a63f7c1 107
Sergunb 0:f1834a63f7c1 108 Device_Serial0 = *(__IO uint32_t*) (0x1FFFF7E8);
Sergunb 0:f1834a63f7c1 109 Device_Serial1 = *(__IO uint32_t*) (0x1FFFF7EC);
Sergunb 0:f1834a63f7c1 110 Device_Serial2 = *(__IO uint32_t*) (0x1FFFF7F0);
Sergunb 0:f1834a63f7c1 111
Sergunb 0:f1834a63f7c1 112 Device_Serial0 += Device_Serial2;
Sergunb 0:f1834a63f7c1 113
Sergunb 0:f1834a63f7c1 114 if (Device_Serial0 != 0)
Sergunb 0:f1834a63f7c1 115 {
Sergunb 0:f1834a63f7c1 116 IntToUnicode(Device_Serial0, &Virtual_Com_Port_StringSerial[2], 8);
Sergunb 0:f1834a63f7c1 117 IntToUnicode(Device_Serial1, &Virtual_Com_Port_StringSerial[18], 4);
Sergunb 0:f1834a63f7c1 118 }
Sergunb 0:f1834a63f7c1 119 }
Sergunb 0:f1834a63f7c1 120
Sergunb 0:f1834a63f7c1 121 /*******************************************************************************
Sergunb 0:f1834a63f7c1 122 * Description : Convert Hex 32Bits value into char.
Sergunb 0:f1834a63f7c1 123 *******************************************************************************/
Sergunb 0:f1834a63f7c1 124 static void IntToUnicode(uint32_t value, uint8_t *pbuf, uint8_t len)
Sergunb 0:f1834a63f7c1 125 {
Sergunb 0:f1834a63f7c1 126 uint8_t idx = 0;
Sergunb 0:f1834a63f7c1 127
Sergunb 0:f1834a63f7c1 128 for (idx = 0; idx < len; idx++)
Sergunb 0:f1834a63f7c1 129 {
Sergunb 0:f1834a63f7c1 130 if (((value >> 28)) < 0xA)
Sergunb 0:f1834a63f7c1 131 {
Sergunb 0:f1834a63f7c1 132 pbuf[2 * idx] = (value >> 28) + '0';
Sergunb 0:f1834a63f7c1 133 }
Sergunb 0:f1834a63f7c1 134 else
Sergunb 0:f1834a63f7c1 135 {
Sergunb 0:f1834a63f7c1 136 pbuf[2 * idx] = (value >> 28) + 'A' - 10;
Sergunb 0:f1834a63f7c1 137 }
Sergunb 0:f1834a63f7c1 138
Sergunb 0:f1834a63f7c1 139 value = value << 4;
Sergunb 0:f1834a63f7c1 140
Sergunb 0:f1834a63f7c1 141 pbuf[2 * idx + 1] = 0;
Sergunb 0:f1834a63f7c1 142 }
Sergunb 0:f1834a63f7c1 143 }