| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| /** | ||
| * @file sdk_stub.c | ||
| * @brief | ||
| * | ||
| * DAPLink Interface Firmware | ||
| * Copyright (c) 2017-2017, ARM Limited, All Rights Reserved | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| * | ||
| * Licensed under the Apache License, Version 2.0 (the "License"); you may | ||
| * not use this file except in compliance with the License. | ||
| * You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ | ||
|
|
||
| __weak void sdk_init() | ||
| { | ||
| // Do nothing | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| /** | ||
| * @file seriah.h | ||
| * @brief Interface for serial driver | ||
| * | ||
| * DAPLink Interface Firmware | ||
| * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| * | ||
| * Licensed under the Apache License, Version 2.0 (the "License"); you may | ||
| * not use this file except in compliance with the License. | ||
| * You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef I2C_ADC_H | ||
| #define I2C_ADC_H | ||
|
|
||
| //stm hal | ||
| #include "stm32f1xx_hal.h" | ||
| //daplink libs | ||
| #include "RTL.h" | ||
| #include "rl_usb.h" | ||
| #include "main.h" | ||
| #include <util.h> | ||
| //system libs | ||
| #include "string.h" | ||
| #include <stdlib.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
| //todo: make it generic | ||
| void I2C_BQ27441GiBridge_Initialize(void); | ||
| void I2C_BQ27441GiBridge_Close(void); | ||
|
|
||
| #if 0 //old code for reference. | ||
| //these ones are fine | ||
| void I2C_write(uint8_t address, uint8_t data); | ||
| void I2C_read(uint8_t address, uint8_t* data); | ||
| #endif | ||
|
|
||
| //todo: make these generic | ||
| void ADC_GnssBridge_Initialize(void); | ||
| uint16_t ADC_GnssBridge_GetCurrentValue(void); | ||
| void ADC_GnssBridge_Close(void); | ||
| void ADC_CellularBridge_Initialize(void); | ||
| uint16_t ADC_CellularBridge_GetCurrentValue(void); | ||
| void ADC_CellularBridge_Close(void); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,276 @@ | ||
| #ifdef ENABLE_PWR_INST | ||
| #include "i2c_adc_bridge.h" | ||
| #endif | ||
|
|
||
| #ifdef ENABLE_2ND_COM_PORT | ||
| #define SIZE_DATA (64) | ||
| static uint8_t recvCmd[SIZE_DATA] = {}; | ||
| #define I2C_CONFIG_SZ 11 | ||
| #define I2C_READ_SZ 9 | ||
| #define I2C_CLOSE_SZ 10 | ||
| #define ADC_CONFIG_SZ 15 | ||
| #define ADC_CLOSE_SZ 14 | ||
| #define MAX_ADC_READING_SIZE 4 | ||
| #define WARN_MSG_SIZE 31 | ||
|
|
||
| static void trasmit_ADC_Reading(uint16_t adcReading, bool isGNSS); | ||
| static uint8_t recvCmd_I2C_config[I2C_CONFIG_SZ] = "I2C_CONFIG"; | ||
| static uint8_t recvCmd_I2C_read[I2C_READ_SZ] = "I2C_READ"; | ||
| static uint8_t recvCmd_I2C_close[I2C_CLOSE_SZ] = "I2C_CLOSE"; | ||
| static uint8_t recvCmd_ADC_gnss_config[ADC_CONFIG_SZ] = "ADC_GNSS_CONFIG"; | ||
| static uint8_t recvCmd_ADC_gnss_close[ADC_CLOSE_SZ] = "ADC_GNSS_CLOSE"; | ||
| static uint8_t recvCmd_ADC_cell_config[ADC_CONFIG_SZ] = "ADC_CELL_CONFIG"; | ||
| static uint8_t recvCmd_ADC_cell_close[ADC_CLOSE_SZ] = "ADC_CELL_CLOSE"; | ||
|
|
||
| bool i2c_enable = false; | ||
| bool adc_gnss_enable = false; | ||
| bool adc_cell_enable = false; | ||
|
|
||
| static uint8_t counter = 0; | ||
|
|
||
| void I2C_ProcessCommand(uint8_t *recvCmd) | ||
| { | ||
| int32_t len_data = 0; | ||
|
|
||
| if(i2c_enable != true && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_I2C_config, I2C_CONFIG_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| I2C_BQ27441GiBridge_Initialize(); | ||
| #endif | ||
|
|
||
| i2c_enable = true; | ||
| len_data = USBD_CDC_2_ACM_DataFree(); | ||
|
|
||
| if (len_data > SIZE_DATA) | ||
| { | ||
| len_data = SIZE_DATA; | ||
| } | ||
|
|
||
| if (len_data) | ||
| { | ||
| uint8_t sendCmd_I2C_config_success[19] = "I2C_CONFIG_SUCCESS"; | ||
| USBD_CDC_2_ACM_DataSend(sendCmd_I2C_config_success, 19); | ||
| } | ||
| } | ||
| else if(i2c_enable == true && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_I2C_read, I2C_READ_SZ-1) == 0)) | ||
| { | ||
| uint8_t responseBuff[2]; | ||
|
|
||
| #ifdef ENABLE_PWR_INST | ||
| //test code for verification; eventually only read/write shall be used by user via PC | ||
| uint8_t data[3]; | ||
| data[0] = 0x00; /* Set address to first register for control */ | ||
| data[1] = 0x02; /* First byte of FW_VERSION sub-command (0x02) */ | ||
| data[2] = 0x00; /* Second byte of FW_VERSION sub-command (0x00) */ | ||
|
|
||
| if(counter == 0) | ||
| { | ||
| //i2c_write(0x55, data[0]); | ||
| //Write_To_I2C1(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t len) | ||
| } | ||
|
|
||
| if(counter == 1) | ||
| { | ||
| //i2c_write(0x55, data[1]); | ||
| //Write_To_I2C1(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t len) | ||
| } | ||
|
|
||
| if(counter == 2) | ||
| { | ||
| //i2c_write(0x55, data[2]); | ||
| //Write_To_I2C1(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t len) | ||
| } | ||
|
|
||
| if(counter == 3) | ||
| { | ||
| //i2c_write(0x55, 0x00); | ||
| //i2c_read(0x55, &responseBuff[0]); | ||
| //i2c_read(0x55, &responseBuff[1]); | ||
| //rather use | ||
| //Write_To_I2C1(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t len) | ||
| //Read_From_I2C1(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t len) | ||
|
|
||
| //responseBuff[0] = (uint8_t)((responseBuff[0]% 10) + '0'); | ||
| //responseBuff[1] = (uint8_t)((responseBuff[1]% 10) + '0'); | ||
|
|
||
| uint16_t pBytes = ((uint16_t) (responseBuff[1] << 8)) + responseBuff[0]; | ||
|
|
||
| if (((pBytes >> 8) == 0x01) && ((pBytes & 0xff) == 0x09)) { | ||
|
|
||
| util_assert(0); | ||
| } | ||
|
|
||
| len_data = USBD_CDC_2_ACM_DataFree(); | ||
|
|
||
| if (len_data > SIZE_DATA) { | ||
| len_data = SIZE_DATA; | ||
| } | ||
| if (len_data) { | ||
| //uint8_t sendCmd_I2C_read_data[20] = "i2c_dummy_rsp \n"; | ||
| //USBD_CDC_2_ACM_DataSend(sendCmd_I2C_read_data, 20); | ||
| //USBD_CDC_2_ACM_DataSend(responseBuff, 2); | ||
|
|
||
| trasmit_ADC_Reading(pBytes, true); | ||
| } | ||
| } | ||
| #endif /* ENABLE_PWR_INST */ | ||
|
|
||
| counter++; | ||
|
|
||
| if(counter > 3) | ||
| { | ||
| counter = 0; | ||
| } | ||
| } | ||
| else if(i2c_enable == true && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_I2C_close, I2C_CLOSE_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| I2C_BQ27441GiBridge_Close(); | ||
| #endif | ||
| i2c_enable = false; | ||
| } | ||
| } | ||
|
|
||
| static void trasmit_ADC_Reading(uint16_t adcReading, bool isGNSS) | ||
| { | ||
| //ensure that ADC reading is received in 12bit resolution | ||
| if(adcReading <= 4095) { | ||
| uint8_t dataString[MAX_ADC_READING_SIZE + 6]; | ||
|
|
||
| if(isGNSS == true) { | ||
| //eventually to make it gnss:xxxx| | ||
| dataString[0] = 'g'; | ||
| dataString[1] = 'n'; | ||
| dataString[2] = 's'; | ||
| dataString[3] = 's'; | ||
| dataString[4] = ':'; | ||
| } | ||
| else { | ||
| //eventually to make it cell:xxxx| | ||
| dataString[0] = 'c'; | ||
| dataString[1] = 'e'; | ||
| dataString[2] = 'l'; | ||
| dataString[3] = 'l'; | ||
| dataString[4] = ':'; | ||
| } | ||
|
|
||
| uint8_t temp[MAX_ADC_READING_SIZE]; | ||
| int8_t i = 0; | ||
| uint8_t j = 0; | ||
|
|
||
| do { | ||
| temp[i++] = (uint8_t)(adcReading % 10) + '0'; //convert integer to character | ||
| adcReading /= 10; | ||
|
|
||
| } while(adcReading); | ||
|
|
||
| //append actaul adc reading after the format string | ||
| while(i > 0) { | ||
| dataString[5+j] = temp[i-1]; | ||
| j++; | ||
| i--; | ||
| } | ||
|
|
||
| //append the terminator at the end of relative string | ||
| dataString[5+j] = '|'; | ||
| //send the total number of bytes | ||
| USBD_CDC_2_ACM_DataSend(dataString, 5+j+1); | ||
| } | ||
| else { | ||
| //util_assert(0); | ||
| } | ||
| } | ||
|
|
||
| void ADC_ProcessCommand(uint8_t *recvCmd) | ||
| { | ||
| if(adc_gnss_enable == false && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_ADC_gnss_config, ADC_CONFIG_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| ADC_GnssBridge_Initialize(); | ||
| #endif | ||
| adc_gnss_enable = true; | ||
| } | ||
| else if(adc_gnss_enable == true && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_ADC_gnss_close, ADC_CLOSE_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| ADC_GnssBridge_Close(); | ||
| #endif | ||
| adc_gnss_enable = false; | ||
| } | ||
| else if(adc_cell_enable == false && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_ADC_cell_config, ADC_CONFIG_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| ADC_CellularBridge_Initialize(); | ||
| #endif | ||
| adc_cell_enable = true; | ||
| } | ||
| else if(adc_cell_enable == true && (strncasecmp((const char *) recvCmd, (const char *) recvCmd_ADC_cell_close, ADC_CLOSE_SZ-1) == 0)) | ||
| { | ||
| #ifdef ENABLE_PWR_INST | ||
| ADC_CellularBridge_Close(); | ||
| #endif | ||
| adc_cell_enable = false; | ||
| } | ||
| } | ||
|
|
||
| void cdc_process_event_2_pwr_inst() | ||
| { | ||
| int32_t len_data = 0; | ||
| len_data = USBD_CDC_2_ACM_DataRead(recvCmd, SIZE_DATA); | ||
|
|
||
| if(len_data) { /* modified this to enable/disbale | ||
| I2C/ADC data transmittion */ | ||
| I2C_ProcessCommand(recvCmd); | ||
| ADC_ProcessCommand(recvCmd); | ||
|
|
||
| #if 0 | ||
| else | ||
| { | ||
| len_data = USBD_CDC_2_ACM_DataFree(); | ||
| if (len_data > SIZE_DATA) { | ||
| len_data = SIZE_DATA; | ||
| } | ||
|
|
||
| if (len_data >= WARN_MSG_SIZE) { | ||
| uint8_t sendCmd_warning[WARN_MSG_SIZE] = "WARN: RECEIVED INVALID COMMAND"; | ||
| USBD_CDC_2_ACM_DataSend(sendCmd_warning, WARN_MSG_SIZE); | ||
| } | ||
| } | ||
| #endif | ||
| } | ||
|
|
||
| if(adc_gnss_enable == true) { | ||
| uint16_t gnssCurrnetVal = 0; | ||
| len_data = USBD_CDC_2_ACM_DataFree(); | ||
|
|
||
| if (len_data > SIZE_DATA) { | ||
| len_data = SIZE_DATA; | ||
| } | ||
|
|
||
| if (len_data >= MAX_ADC_READING_SIZE + 6) { /* check if there is enough capacity | ||
| in buffer to transmit the maximum | ||
| possible ADC reading */ | ||
| #ifdef ENABLE_PWR_INST | ||
| gnssCurrnetVal = ADC_GnssBridge_GetCurrentValue(); | ||
| #endif | ||
| trasmit_ADC_Reading(gnssCurrnetVal, true); | ||
| } | ||
| } | ||
|
|
||
| if(adc_cell_enable == true) { | ||
| uint16_t cellularCurrnetVal = 0; | ||
| len_data = USBD_CDC_2_ACM_DataFree(); | ||
|
|
||
| if (len_data > SIZE_DATA) { | ||
| len_data = SIZE_DATA; | ||
| } | ||
|
|
||
| if (len_data >= MAX_ADC_READING_SIZE + 6) { | ||
| #ifdef ENABLE_PWR_INST | ||
| cellularCurrnetVal = ADC_CellularBridge_GetCurrentValue(); | ||
| #endif | ||
| trasmit_ADC_Reading(cellularCurrnetVal, false); | ||
| } | ||
| } | ||
| } | ||
| #endif /* ENABLE_2ND_COM_PORT */ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| /** | ||
| * @file sdk.h | ||
| * @brief | ||
| * | ||
| * DAPLink Interface Firmware | ||
| * Copyright (c) 2017-2017, ARM Limited, All Rights Reserved | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| * | ||
| * Licensed under the Apache License, Version 2.0 (the "License"); you may | ||
| * not use this file except in compliance with the License. | ||
| * You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef SDK_H | ||
| #define SDK_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| void sdk_init(void); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| /** | ||
| * @file IO_Config.h | ||
| * @brief | ||
| * | ||
| * DAPLink Interface Firmware | ||
| * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| * | ||
| * Licensed under the Apache License, Version 2.0 (the "License"); you may | ||
| * not use this file except in compliance with the License. | ||
| * You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef __IO_CONFIG_H__ | ||
| #define __IO_CONFIG_H__ | ||
|
|
||
| #include "stm32f1xx.h" | ||
| #include "compiler.h" | ||
| #include "daplink.h" | ||
|
|
||
| COMPILER_ASSERT(DAPLINK_HIC_ID == DAPLINK_HIC_ID_STM32F103XB); | ||
|
|
||
| //USB control pin | ||
| #define USB_CONNECT_PORT_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() | ||
| #define USB_CONNECT_PORT_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() | ||
| #define USB_CONNECT_PORT GPIOA | ||
| #define USB_CONNECT_PIN GPIO_PIN_15 | ||
| #define USB_CONNECT_ON() (USB_CONNECT_PORT->BSRR = USB_CONNECT_PIN) | ||
| #define USB_CONNECT_OFF() (USB_CONNECT_PORT->BRR = USB_CONNECT_PIN) | ||
|
|
||
| //Connected LED | ||
| #define CONNECTED_LED_PORT GPIOB | ||
| #define CONNECTED_LED_PIN GPIO_PIN_6 | ||
| #define CONNECTED_LED_PIN_Bit 6 | ||
|
|
||
| //When bootloader, disable the target port(not used) | ||
| #define POWER_EN_PIN_PORT GPIOB | ||
| #define POWER_EN_PIN GPIO_PIN_15 | ||
| #define POWER_EN_Bit 15 | ||
|
|
||
| // nRESET OUT Pin | ||
| #define nRESET_PIN_PORT GPIOB | ||
| #define nRESET_PIN GPIO_PIN_0 | ||
| #define nRESET_PIN_Bit 0 | ||
|
|
||
| //SWD | ||
| #define SWCLK_TCK_PIN_PORT GPIOB | ||
| #define SWCLK_TCK_PIN GPIO_PIN_13 | ||
| #define SWCLK_TCK_PIN_Bit 13 | ||
|
|
||
| #define SWDIO_OUT_PIN_PORT GPIOB | ||
| #define SWDIO_OUT_PIN GPIO_PIN_14 | ||
| #define SWDIO_OUT_PIN_Bit 14 | ||
|
|
||
| #define SWDIO_IN_PIN_PORT GPIOB | ||
| #define SWDIO_IN_PIN GPIO_PIN_12 | ||
| #define SWDIO_IN_PIN_Bit 12 | ||
|
|
||
| //LEDs | ||
| //USB status LED | ||
| #define RUNNING_LED_PORT GPIOA | ||
| #define RUNNING_LED_PIN GPIO_PIN_9 | ||
| #define RUNNING_LED_Bit 9 | ||
|
|
||
| #define PIN_HID_LED_PORT GPIOA | ||
| #define PIN_HID_LED GPIO_PIN_9 | ||
| #define PIN_HID_LED_Bit 9 | ||
|
|
||
| #define PIN_CDC_LED_PORT GPIOA | ||
| #define PIN_CDC_LED GPIO_PIN_9 | ||
| #define PIN_CDC_LED_Bit 9 | ||
|
|
||
| #define PIN_MSC_LED_PORT GPIOA | ||
| #define PIN_MSC_LED GPIO_PIN_9 | ||
| #define PIN_MSC_LED_Bit 9 | ||
|
|
||
|
|
||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,328 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief This file contains all the functions prototypes for the HAL | ||
| * module driver. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_H | ||
| #define __STM32F1xx_HAL_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx_hal_conf.h" | ||
|
|
||
| /** @addtogroup STM32F1xx_HAL_Driver | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup HAL | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
| /* Exported constants --------------------------------------------------------*/ | ||
|
|
||
| /* Exported macro ------------------------------------------------------------*/ | ||
|
|
||
| /** @defgroup HAL_Exported_Macros HAL Exported Macros | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup DBGMCU_Freeze_Unfreeze Freeze Unfreeze Peripherals in Debug mode | ||
| * @brief Freeze/Unfreeze Peripherals in Debug mode | ||
| * Note: On devices STM32F10xx8 and STM32F10xxB, | ||
| * STM32F101xC/D/E and STM32F103xC/D/E, | ||
| * STM32F101xF/G and STM32F103xF/G | ||
| * STM32F10xx4 and STM32F10xx6 | ||
| * Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in | ||
| * debug mode (not accessible by the user software in normal mode). | ||
| * Refer to errata sheet of these devices for more details. | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Peripherals on APB1 */ | ||
| /** | ||
| * @brief TIM2 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM2_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM2_STOP) | ||
|
|
||
| /** | ||
| * @brief TIM3 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM3_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM3_STOP) | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM4_STOP) | ||
| /** | ||
| * @brief TIM4 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM4() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM4_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM4() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM4_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM5_STOP) | ||
| /** | ||
| * @brief TIM5 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM5() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM5_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM5() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM5_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM6_STOP) | ||
| /** | ||
| * @brief TIM6 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM6() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM6_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM6() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM6_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM7_STOP) | ||
| /** | ||
| * @brief TIM7 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM7() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM7_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM7() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM7_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM12_STOP) | ||
| /** | ||
| * @brief TIM12 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM12() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM12_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM12() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM12_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM13_STOP) | ||
| /** | ||
| * @brief TIM13 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM13() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM13_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM13() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM13_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM14_STOP) | ||
| /** | ||
| * @brief TIM14 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM14() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM14_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM14() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM14_STOP) | ||
| #endif | ||
|
|
||
| /** | ||
| * @brief WWDG Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_WWDG_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_WWDG_STOP) | ||
|
|
||
| /** | ||
| * @brief IWDG Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_IWDG_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_IWDG_STOP) | ||
|
|
||
| /** | ||
| * @brief I2C1 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT) | ||
| #define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT) | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT) | ||
| /** | ||
| * @brief I2C2 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT) | ||
| #define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_CAN1_STOP) | ||
| /** | ||
| * @brief CAN1 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_CAN1() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN1_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_CAN1() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN1_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_CAN2_STOP) | ||
| /** | ||
| * @brief CAN2 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_CAN2() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN2_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_CAN2() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN2_STOP) | ||
| #endif | ||
|
|
||
| /* Peripherals on APB2 */ | ||
| #if defined (DBGMCU_CR_DBG_TIM1_STOP) | ||
| /** | ||
| * @brief TIM1 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM1() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM1_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM1() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM1_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM8_STOP) | ||
| /** | ||
| * @brief TIM8 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM8() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM8_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM8() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM8_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM9_STOP) | ||
| /** | ||
| * @brief TIM9 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM9() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM9_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM9() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM9_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM10_STOP) | ||
| /** | ||
| * @brief TIM10 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM10() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM10_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM10() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM10_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM11_STOP) | ||
| /** | ||
| * @brief TIM11 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM11() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM11_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM11() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM11_STOP) | ||
| #endif | ||
|
|
||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM15_STOP) | ||
| /** | ||
| * @brief TIM15 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM15() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM15_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM15() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM15_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM16_STOP) | ||
| /** | ||
| * @brief TIM16 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM16() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM16_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM16() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM16_STOP) | ||
| #endif | ||
|
|
||
| #if defined (DBGMCU_CR_DBG_TIM17_STOP) | ||
| /** | ||
| * @brief TIM17 Peripherals Debug mode | ||
| */ | ||
| #define __HAL_DBGMCU_FREEZE_TIM17() SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM17_STOP) | ||
| #define __HAL_DBGMCU_UNFREEZE_TIM17() CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM17_STOP) | ||
| #endif | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Exported functions --------------------------------------------------------*/ | ||
|
|
||
| /** @addtogroup HAL_Exported_Functions | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup HAL_Exported_Functions_Group1 | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Initialization and de-initialization functions ******************************/ | ||
| HAL_StatusTypeDef HAL_Init(void); | ||
| HAL_StatusTypeDef HAL_DeInit(void); | ||
| void HAL_MspInit(void); | ||
| void HAL_MspDeInit(void); | ||
| HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority); | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup HAL_Exported_Functions_Group2 | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Peripheral Control functions ************************************************/ | ||
| void HAL_IncTick(void); | ||
| void HAL_Delay(__IO uint32_t Delay); | ||
| uint32_t HAL_GetTick(void); | ||
| void HAL_SuspendTick(void); | ||
| void HAL_ResumeTick(void); | ||
| uint32_t HAL_GetHalVersion(void); | ||
| uint32_t HAL_GetREVID(void); | ||
| uint32_t HAL_GetDEVID(void); | ||
| void HAL_DBGMCU_EnableDBGSleepMode(void); | ||
| void HAL_DBGMCU_DisableDBGSleepMode(void); | ||
| void HAL_DBGMCU_EnableDBGStopMode(void); | ||
| void HAL_DBGMCU_DisableDBGStopMode(void); | ||
| void HAL_DBGMCU_EnableDBGStandbyMode(void); | ||
| void HAL_DBGMCU_DisableDBGStandbyMode(void); | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif /* __STM32F1xx_HAL_H */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,214 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal_def.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief This file contains HAL common defines, enumeration, macros and | ||
| * structures definitions. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_DEF | ||
| #define __STM32F1xx_HAL_DEF | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx.h" | ||
| #include "Legacy/stm32_hal_legacy.h" | ||
| #include <stdio.h> | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
|
|
||
| /** | ||
| * @brief HAL Status structures definition | ||
| */ | ||
| typedef enum | ||
| { | ||
| HAL_OK = 0x00, | ||
| HAL_ERROR = 0x01, | ||
| HAL_BUSY = 0x02, | ||
| HAL_TIMEOUT = 0x03 | ||
| } HAL_StatusTypeDef; | ||
|
|
||
| /** | ||
| * @brief HAL Lock structures definition | ||
| */ | ||
| typedef enum | ||
| { | ||
| HAL_UNLOCKED = 0x00, | ||
| HAL_LOCKED = 0x01 | ||
| } HAL_LockTypeDef; | ||
|
|
||
| /* Exported macro ------------------------------------------------------------*/ | ||
|
|
||
| #define HAL_MAX_DELAY 0xFFFFFFFF | ||
|
|
||
| #define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) != RESET) | ||
| #define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == RESET) | ||
|
|
||
| #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_) \ | ||
| do{ \ | ||
| (__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_); \ | ||
| (__DMA_HANDLE_).Parent = (__HANDLE__); \ | ||
| } while(0) | ||
|
|
||
| #define UNUSED(x) ((void)(x)) | ||
|
|
||
| /** @brief Reset the Handle's State field. | ||
| * @param __HANDLE__: specifies the Peripheral Handle. | ||
| * @note This macro can be used for the following purpose: | ||
| * - When the Handle is declared as local variable; before passing it as parameter | ||
| * to HAL_PPP_Init() for the first time, it is mandatory to use this macro | ||
| * to set to 0 the Handle's "State" field. | ||
| * Otherwise, "State" field may have any random value and the first time the function | ||
| * HAL_PPP_Init() is called, the low level hardware initialization will be missed | ||
| * (i.e. HAL_PPP_MspInit() will not be executed). | ||
| * - When there is a need to reconfigure the low level hardware: instead of calling | ||
| * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). | ||
| * In this later function, when the Handle's "State" field is set to 0, it will execute the function | ||
| * HAL_PPP_MspInit() which will reconfigure the low level hardware. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0) | ||
|
|
||
| #if (USE_RTOS == 1) | ||
| #error " USE_RTOS should be 0 in the current HAL release " | ||
| #else | ||
| #define __HAL_LOCK(__HANDLE__) \ | ||
| do{ \ | ||
| if((__HANDLE__)->Lock == HAL_LOCKED) \ | ||
| { \ | ||
| return HAL_BUSY; \ | ||
| } \ | ||
| else \ | ||
| { \ | ||
| (__HANDLE__)->Lock = HAL_LOCKED; \ | ||
| } \ | ||
| }while (0) | ||
|
|
||
| #define __HAL_UNLOCK(__HANDLE__) \ | ||
| do{ \ | ||
| (__HANDLE__)->Lock = HAL_UNLOCKED; \ | ||
| }while (0) | ||
| #endif /* USE_RTOS */ | ||
|
|
||
| #if defined ( __GNUC__ ) | ||
| #ifndef __weak | ||
| #define __weak __attribute__((weak)) | ||
| #endif /* __weak */ | ||
| #ifndef __packed | ||
| #define __packed __attribute__((__packed__)) | ||
| #endif /* __packed */ | ||
| #endif /* __GNUC__ */ | ||
|
|
||
|
|
||
| /* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ | ||
| #if defined (__GNUC__) /* GNU Compiler */ | ||
| #ifndef __ALIGN_END | ||
| #define __ALIGN_END __attribute__ ((aligned (4))) | ||
| #endif /* __ALIGN_END */ | ||
| #ifndef __ALIGN_BEGIN | ||
| #define __ALIGN_BEGIN | ||
| #endif /* __ALIGN_BEGIN */ | ||
| #else | ||
| #ifndef __ALIGN_END | ||
| #define __ALIGN_END | ||
| #endif /* __ALIGN_END */ | ||
| #ifndef __ALIGN_BEGIN | ||
| #if defined (__CC_ARM) /* ARM Compiler */ | ||
| #define __ALIGN_BEGIN __align(4) | ||
| #elif defined (__ICCARM__) /* IAR Compiler */ | ||
| #define __ALIGN_BEGIN | ||
| #endif /* __CC_ARM */ | ||
| #endif /* __ALIGN_BEGIN */ | ||
| #endif /* __GNUC__ */ | ||
|
|
||
| /** | ||
| * @brief __RAM_FUNC definition | ||
| */ | ||
| #if defined ( __CC_ARM ) | ||
| /* ARM Compiler | ||
| ------------ | ||
| RAM functions are defined using the toolchain options. | ||
| Functions that are executed in RAM should reside in a separate source module. | ||
| Using the 'Options for File' dialog you can simply change the 'Code / Const' | ||
| area of a module to a memory space in physical RAM. | ||
| Available memory areas are declared in the 'Target' tab of the 'Options for Target' | ||
| dialog. | ||
| */ | ||
| #define __RAM_FUNC HAL_StatusTypeDef | ||
|
|
||
| #elif defined ( __ICCARM__ ) | ||
| /* ICCARM Compiler | ||
| --------------- | ||
| RAM functions are defined using a specific toolchain keyword "__ramfunc". | ||
| */ | ||
| #define __RAM_FUNC __ramfunc HAL_StatusTypeDef | ||
|
|
||
| #elif defined ( __GNUC__ ) | ||
| /* GNU Compiler | ||
| ------------ | ||
| RAM functions are defined using a specific toolchain attribute | ||
| "__attribute__((section(".RamFunc")))". | ||
| */ | ||
| #define __RAM_FUNC HAL_StatusTypeDef __attribute__((section(".RamFunc"))) | ||
|
|
||
| #endif | ||
|
|
||
| /** | ||
| * @brief __NOINLINE definition | ||
| */ | ||
| #if defined ( __CC_ARM ) || defined ( __GNUC__ ) | ||
| /* ARM & GNUCompiler | ||
| ---------------- | ||
| */ | ||
| #define __NOINLINE __attribute__ ( (noinline) ) | ||
|
|
||
| #elif defined ( __ICCARM__ ) | ||
| /* ICCARM Compiler | ||
| --------------- | ||
| */ | ||
| #define __NOINLINE _Pragma("optimize = no_inline") | ||
|
|
||
| #endif | ||
|
|
||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif /* ___STM32F1xx_HAL_DEF */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,260 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal_dma_ex.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief Header file of DMA HAL extension module. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_DMA_EX_H | ||
| #define __STM32F1xx_HAL_DMA_EX_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx_hal_def.h" | ||
|
|
||
| /** @addtogroup STM32F1xx_HAL_Driver | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup DMAEx DMAEx | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
| /* Exported constants --------------------------------------------------------*/ | ||
| /* Exported macro ------------------------------------------------------------*/ | ||
| /** @defgroup DMAEx_Exported_Macros DMA Extended Exported Macros | ||
| * @{ | ||
| */ | ||
| /* Interrupt & Flag management */ | ||
| #if defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || \ | ||
| defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC) | ||
| /** @defgroup DMAEx_High_density_XL_density_Product_devices DMAEx High density and XL density product devices | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel transfer complete flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified transfer complete flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TC7 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\ | ||
| DMA_FLAG_TC5) | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel half transfer complete flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified half transfer complete flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_HT7 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\ | ||
| DMA_FLAG_HT5) | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel transfer error flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified transfer error flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TE7 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\ | ||
| DMA_FLAG_TE5) | ||
|
|
||
| /** | ||
| * @brief Get the DMA Channel pending flags. | ||
| * @param __HANDLE__: DMA handle | ||
| * @param __FLAG__: Get the specified flag. | ||
| * This parameter can be any combination of the following values: | ||
| * @arg DMA_FLAG_TCx: Transfer complete flag | ||
| * @arg DMA_FLAG_HTx: Half transfer complete flag | ||
| * @arg DMA_FLAG_TEx: Transfer error flag | ||
| * Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag. | ||
| * @retval The state of FLAG (SET or RESET). | ||
| */ | ||
| #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\ | ||
| (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->ISR & (__FLAG__)) :\ | ||
| (DMA1->ISR & (__FLAG__))) | ||
|
|
||
| /** | ||
| * @brief Clears the DMA Channel pending flags. | ||
| * @param __HANDLE__: DMA handle | ||
| * @param __FLAG__: specifies the flag to clear. | ||
| * This parameter can be any combination of the following values: | ||
| * @arg DMA_FLAG_TCx: Transfer complete flag | ||
| * @arg DMA_FLAG_HTx: Half transfer complete flag | ||
| * @arg DMA_FLAG_TEx: Transfer error flag | ||
| * Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \ | ||
| (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->IFCR = (__FLAG__)) :\ | ||
| (DMA1->IFCR = (__FLAG__))) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #else | ||
| /** @defgroup DMA_Low_density_Medium_density_Product_devices DMA Low density and Medium density product devices | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel transfer complete flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified transfer complete flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ | ||
| DMA_FLAG_TC7) | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel half transfer complete flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified half transfer complete flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ | ||
| DMA_FLAG_HT7) | ||
|
|
||
| /** | ||
| * @brief Returns the current DMA Channel transfer error flag. | ||
| * @param __HANDLE__: DMA handle | ||
| * @retval The specified transfer error flag index. | ||
| */ | ||
| #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ | ||
| (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ | ||
| ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ | ||
| DMA_FLAG_TE7) | ||
|
|
||
| /** | ||
| * @brief Get the DMA Channel pending flags. | ||
| * @param __HANDLE__: DMA handle | ||
| * @param __FLAG__: Get the specified flag. | ||
| * This parameter can be any combination of the following values: | ||
| * @arg DMA_FLAG_TCx: Transfer complete flag | ||
| * @arg DMA_FLAG_HTx: Half transfer complete flag | ||
| * @arg DMA_FLAG_TEx: Transfer error flag | ||
| * Where x can be 1_7 to select the DMA Channel flag. | ||
| * @retval The state of FLAG (SET or RESET). | ||
| */ | ||
|
|
||
| #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (DMA1->ISR & (__FLAG__)) | ||
|
|
||
| /** | ||
| * @brief Clears the DMA Channel pending flags. | ||
| * @param __HANDLE__: DMA handle | ||
| * @param __FLAG__: specifies the flag to clear. | ||
| * This parameter can be any combination of the following values: | ||
| * @arg DMA_FLAG_TCx: Transfer complete flag | ||
| * @arg DMA_FLAG_HTx: Half transfer complete flag | ||
| * @arg DMA_FLAG_TEx: Transfer error flag | ||
| * Where x can be 1_7 to select the DMA Channel flag. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__)) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #endif | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || */ | ||
| /* STM32F103xG || STM32F105xC || STM32F107xC */ | ||
|
|
||
| #endif /* __STM32F1xx_HAL_DMA_H */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,348 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal_flash.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief Header file of Flash HAL module. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_FLASH_H | ||
| #define __STM32F1xx_HAL_FLASH_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx_hal_def.h" | ||
|
|
||
| /** @addtogroup STM32F1xx_HAL_Driver | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH_Private_Constants | ||
| * @{ | ||
| */ | ||
| #define FLASH_TIMEOUT_VALUE ((uint32_t)50000)/* 50 s */ | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH_Private_Macros | ||
| * @{ | ||
| */ | ||
|
|
||
| #define IS_FLASH_TYPEPROGRAM(VALUE) (((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \ | ||
| ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \ | ||
| ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD)) | ||
|
|
||
| #if defined(FLASH_ACR_LATENCY) | ||
| #define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \ | ||
| ((__LATENCY__) == FLASH_LATENCY_1) || \ | ||
| ((__LATENCY__) == FLASH_LATENCY_2)) | ||
|
|
||
| #else | ||
| #define IS_FLASH_LATENCY(__LATENCY__) ((__LATENCY__) == FLASH_LATENCY_0) | ||
| #endif /* FLASH_ACR_LATENCY */ | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
| /** @defgroup FLASH_Exported_Types FLASH Exported Types | ||
| * @{ | ||
| */ | ||
|
|
||
|
|
||
| /** | ||
| * @brief FLASH Procedure structure definition | ||
| */ | ||
| typedef enum | ||
| { | ||
| FLASH_PROC_NONE = 0, | ||
| FLASH_PROC_PAGEERASE = 1, | ||
| FLASH_PROC_MASSERASE = 2, | ||
| FLASH_PROC_PROGRAMHALFWORD = 3, | ||
| FLASH_PROC_PROGRAMWORD = 4, | ||
| FLASH_PROC_PROGRAMDOUBLEWORD = 5 | ||
| } FLASH_ProcedureTypeDef; | ||
|
|
||
| /** | ||
| * @brief FLASH handle Structure definition | ||
| */ | ||
| typedef struct | ||
| { | ||
| __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*!< Internal variable to indicate which procedure is ongoing or not in IT context */ | ||
|
|
||
| __IO uint32_t DataRemaining; /*!< Internal variable to save the remaining pages to erase or half-word to program in IT context */ | ||
|
|
||
| __IO uint32_t Address; /*!< Internal variable to save address selected for program or erase */ | ||
|
|
||
| __IO uint64_t Data; /*!< Internal variable to save data to be programmed */ | ||
|
|
||
| HAL_LockTypeDef Lock; /*!< FLASH locking object */ | ||
|
|
||
| __IO uint32_t ErrorCode; /*!< FLASH error code | ||
| This parameter can be a value of @ref FLASH_Error_Codes */ | ||
| } FLASH_ProcessTypeDef; | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Exported constants --------------------------------------------------------*/ | ||
| /** @defgroup FLASH_Exported_Constants FLASH Exported Constants | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup FLASH_Error_Codes FLASH Error Codes | ||
| * @{ | ||
| */ | ||
|
|
||
| #define HAL_FLASH_ERROR_NONE ((uint32_t)0x00) /*!< No error */ | ||
| #define HAL_FLASH_ERROR_PROG ((uint32_t)0x01) /*!< Programming error */ | ||
| #define HAL_FLASH_ERROR_WRP ((uint32_t)0x02) /*!< Write protection error */ | ||
| #define HAL_FLASH_ERROR_OPTV ((uint32_t)0x04) /*!< Option validity error */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @defgroup FLASH_Type_Program FLASH Type Program | ||
| * @{ | ||
| */ | ||
| #define FLASH_TYPEPROGRAM_HALFWORD ((uint32_t)0x01) /*!<Program a half-word (16-bit) at a specified address.*/ | ||
| #define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02) /*!<Program a word (32-bit) at a specified address.*/ | ||
| #define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03) /*!<Program a double word (64-bit) at a specified address*/ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #if defined(FLASH_ACR_LATENCY) | ||
| /** @defgroup FLASH_Latency FLASH Latency | ||
| * @{ | ||
| */ | ||
| #define FLASH_LATENCY_0 ((uint32_t)0x00000000) /*!< FLASH Zero Latency cycle */ | ||
| #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_0 /*!< FLASH One Latency cycle */ | ||
| #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two Latency cycles */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #else | ||
| /** @defgroup FLASH_Latency FLASH Latency | ||
| * @{ | ||
| */ | ||
| #define FLASH_LATENCY_0 ((uint32_t)0x00000000) /*!< FLASH Zero Latency cycle */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #endif /* FLASH_ACR_LATENCY */ | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Exported macro ------------------------------------------------------------*/ | ||
|
|
||
| /** @defgroup FLASH_Exported_Macros FLASH Exported Macros | ||
| * @brief macros to control FLASH features | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup FLASH_Half_Cycle FLASH Half Cycle | ||
| * @brief macros to handle FLASH half cycle | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief Enable the FLASH half cycle access. | ||
| * @note half cycle access can only be used with a low-frequency clock of less than | ||
| 8 MHz that can be obtained with the use of HSI or HSE but not of PLL. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_FLASH_HALF_CYCLE_ACCESS_ENABLE() (FLASH->ACR |= FLASH_ACR_HLFCYA) | ||
|
|
||
| /** | ||
| * @brief Disable the FLASH half cycle access. | ||
| * @note half cycle access can only be used with a low-frequency clock of less than | ||
| 8 MHz that can be obtained with the use of HSI or HSE but not of PLL. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_FLASH_HALF_CYCLE_ACCESS_DISABLE() (FLASH->ACR &= (~FLASH_ACR_HLFCYA)) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #if defined(FLASH_ACR_LATENCY) | ||
| /** @defgroup FLASH_EM_Latency FLASH Latency | ||
| * @brief macros to handle FLASH Latency | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief Set the FLASH Latency. | ||
| * @param __LATENCY__ FLASH Latency | ||
| * The value of this parameter depend on device used within the same series | ||
| * @retval None | ||
| */ | ||
| #define __HAL_FLASH_SET_LATENCY(__LATENCY__) (FLASH->ACR = (FLASH->ACR&(~FLASH_ACR_LATENCY)) | (__LATENCY__)) | ||
|
|
||
|
|
||
| /** | ||
| * @brief Get the FLASH Latency. | ||
| * @retval FLASH Latency | ||
| * The value of this parameter depend on device used within the same series | ||
| */ | ||
| #define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #endif /* FLASH_ACR_LATENCY */ | ||
| /** @defgroup FLASH_Prefetch FLASH Prefetch | ||
| * @brief macros to handle FLASH Prefetch buffer | ||
| * @{ | ||
| */ | ||
| /** | ||
| * @brief Enable the FLASH prefetch buffer. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTBE) | ||
|
|
||
| /** | ||
| * @brief Disable the FLASH prefetch buffer. | ||
| * @retval None | ||
| */ | ||
| #define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTBE)) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Include FLASH HAL Extended module */ | ||
| #include "stm32f1xx_hal_flash_ex.h" | ||
|
|
||
| /* Exported functions --------------------------------------------------------*/ | ||
| /** @addtogroup FLASH_Exported_Functions | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH_Exported_Functions_Group1 | ||
| * @{ | ||
| */ | ||
| /* IO operation functions *****************************************************/ | ||
| HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data); | ||
| HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data); | ||
|
|
||
| /* FLASH IRQ handler function */ | ||
| void HAL_FLASH_IRQHandler(void); | ||
| /* Callbacks in non blocking modes */ | ||
| void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue); | ||
| void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue); | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH_Exported_Functions_Group2 | ||
| * @{ | ||
| */ | ||
| /* Peripheral Control functions ***********************************************/ | ||
| HAL_StatusTypeDef HAL_FLASH_Unlock(void); | ||
| HAL_StatusTypeDef HAL_FLASH_Lock(void); | ||
| HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void); | ||
| HAL_StatusTypeDef HAL_FLASH_OB_Lock(void); | ||
| HAL_StatusTypeDef HAL_FLASH_OB_Launch(void); | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup FLASH_Exported_Functions_Group3 | ||
| * @{ | ||
| */ | ||
| /* Peripheral State and Error functions ***************************************/ | ||
| uint32_t HAL_FLASH_GetError(void); | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Private function -------------------------------------------------*/ | ||
| /** @addtogroup FLASH_Private_Functions | ||
| * @{ | ||
| */ | ||
| void FLASH_PageErase(uint32_t PageAddress); | ||
| HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); | ||
| #if defined(FLASH_BANK2_END) | ||
| HAL_StatusTypeDef FLASH_WaitForLastOperationBank2(uint32_t Timeout); | ||
| #endif /* FLASH_BANK2_END */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif /* __STM32F1xx_HAL_FLASH_H */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,324 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal_gpio.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief Header file of GPIO HAL module. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_GPIO_H | ||
| #define __STM32F1xx_HAL_GPIO_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx_hal_def.h" | ||
|
|
||
| /** @addtogroup STM32F1xx_HAL_Driver | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup GPIO | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
| /** @defgroup GPIO_Exported_Types GPIO Exported Types | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief GPIO Init structure definition | ||
| */ | ||
| typedef struct | ||
| { | ||
| uint32_t Pin; /*!< Specifies the GPIO pins to be configured. | ||
| This parameter can be any value of @ref GPIO_pins_define */ | ||
|
|
||
| uint32_t Mode; /*!< Specifies the operating mode for the selected pins. | ||
| This parameter can be a value of @ref GPIO_mode_define */ | ||
|
|
||
| uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. | ||
| This parameter can be a value of @ref GPIO_pull_define */ | ||
|
|
||
| uint32_t Speed; /*!< Specifies the speed for the selected pins. | ||
| This parameter can be a value of @ref GPIO_speed_define */ | ||
| }GPIO_InitTypeDef; | ||
|
|
||
| /** | ||
| * @brief GPIO Bit SET and Bit RESET enumeration | ||
| */ | ||
| typedef enum | ||
| { | ||
| GPIO_PIN_RESET = 0, | ||
| GPIO_PIN_SET | ||
| }GPIO_PinState; | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /* Exported constants --------------------------------------------------------*/ | ||
|
|
||
| /** @defgroup GPIO_Exported_Constants GPIO Exported Constants | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup GPIO_pins_define GPIO pins define | ||
| * @{ | ||
| */ | ||
| #define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */ | ||
| #define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */ | ||
| #define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */ | ||
| #define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */ | ||
| #define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */ | ||
| #define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */ | ||
| #define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */ | ||
| #define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */ | ||
| #define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */ | ||
| #define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */ | ||
| #define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */ | ||
| #define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */ | ||
| #define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */ | ||
| #define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */ | ||
| #define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */ | ||
| #define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */ | ||
| #define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */ | ||
|
|
||
| #define GPIO_PIN_MASK ((uint32_t)0x0000FFFF) /* PIN mask for assert test */ | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /** @defgroup GPIO_mode_define GPIO mode define | ||
| * @brief GPIO Configuration Mode | ||
| * Elements values convention: 0xX0yz00YZ | ||
| * - X : GPIO mode or EXTI Mode | ||
| * - y : External IT or Event trigger detection | ||
| * - z : IO configuration on External IT or Event | ||
| * - Y : Output type (Push Pull or Open Drain) | ||
| * - Z : IO Direction mode (Input, Output, Alternate or Analog) | ||
| * @{ | ||
| */ | ||
| #define GPIO_MODE_INPUT ((uint32_t)0x00000000) /*!< Input Floating Mode */ | ||
| #define GPIO_MODE_OUTPUT_PP ((uint32_t)0x00000001) /*!< Output Push Pull Mode */ | ||
| #define GPIO_MODE_OUTPUT_OD ((uint32_t)0x00000011) /*!< Output Open Drain Mode */ | ||
| #define GPIO_MODE_AF_PP ((uint32_t)0x00000002) /*!< Alternate Function Push Pull Mode */ | ||
| #define GPIO_MODE_AF_OD ((uint32_t)0x00000012) /*!< Alternate Function Open Drain Mode */ | ||
| #define GPIO_MODE_AF_INPUT GPIO_MODE_INPUT /*!< Alternate Function Input Mode */ | ||
|
|
||
| #define GPIO_MODE_ANALOG ((uint32_t)0x00000003) /*!< Analog Mode */ | ||
|
|
||
| #define GPIO_MODE_IT_RISING ((uint32_t)0x10110000) /*!< External Interrupt Mode with Rising edge trigger detection */ | ||
| #define GPIO_MODE_IT_FALLING ((uint32_t)0x10210000) /*!< External Interrupt Mode with Falling edge trigger detection */ | ||
| #define GPIO_MODE_IT_RISING_FALLING ((uint32_t)0x10310000) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ | ||
|
|
||
| #define GPIO_MODE_EVT_RISING ((uint32_t)0x10120000) /*!< External Event Mode with Rising edge trigger detection */ | ||
| #define GPIO_MODE_EVT_FALLING ((uint32_t)0x10220000) /*!< External Event Mode with Falling edge trigger detection */ | ||
| #define GPIO_MODE_EVT_RISING_FALLING ((uint32_t)0x10320000) /*!< External Event Mode with Rising/Falling edge trigger detection */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /** @defgroup GPIO_speed_define GPIO speed define | ||
| * @brief GPIO Output Maximum frequency | ||
| * @{ | ||
| */ | ||
| #define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed */ | ||
| #define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed */ | ||
| #define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /** @defgroup GPIO_pull_define GPIO pull define | ||
| * @brief GPIO Pull-Up or Pull-Down Activation | ||
| * @{ | ||
| */ | ||
| #define GPIO_NOPULL ((uint32_t)0x00000000) /*!< No Pull-up or Pull-down activation */ | ||
| #define GPIO_PULLUP ((uint32_t)0x00000001) /*!< Pull-up activation */ | ||
| #define GPIO_PULLDOWN ((uint32_t)0x00000002) /*!< Pull-down activation */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /* Private macros --------------------------------------------------------*/ | ||
| /** @addtogroup GPIO_Private_Macros | ||
| * @{ | ||
| */ | ||
|
|
||
| #define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) | ||
|
|
||
| #define IS_GPIO_PIN(PIN) (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00) | ||
|
|
||
| #define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \ | ||
| ((PULL) == GPIO_PULLDOWN)) | ||
|
|
||
| #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || \ | ||
| ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || ((SPEED) == GPIO_SPEED_FREQ_HIGH)) | ||
|
|
||
| #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\ | ||
| ((MODE) == GPIO_MODE_OUTPUT_PP) ||\ | ||
| ((MODE) == GPIO_MODE_OUTPUT_OD) ||\ | ||
| ((MODE) == GPIO_MODE_AF_PP) ||\ | ||
| ((MODE) == GPIO_MODE_AF_OD) ||\ | ||
| ((MODE) == GPIO_MODE_IT_RISING) ||\ | ||
| ((MODE) == GPIO_MODE_IT_FALLING) ||\ | ||
| ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\ | ||
| ((MODE) == GPIO_MODE_EVT_RISING) ||\ | ||
| ((MODE) == GPIO_MODE_EVT_FALLING) ||\ | ||
| ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\ | ||
| ((MODE) == GPIO_MODE_ANALOG)) | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| /* Exported macro ------------------------------------------------------------*/ | ||
| /** @defgroup GPIO_Exported_Macros GPIO Exported Macros | ||
| * @{ | ||
| */ | ||
|
|
||
| /** | ||
| * @brief Checks whether the specified EXTI line flag is set or not. | ||
| * @param __EXTI_LINE__: specifies the EXTI line flag to check. | ||
| * This parameter can be GPIO_PIN_x where x can be(0..15) | ||
| * @retval The new state of __EXTI_LINE__ (SET or RESET). | ||
| */ | ||
| #define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) | ||
|
|
||
| /** | ||
| * @brief Clears the EXTI's line pending flags. | ||
| * @param __EXTI_LINE__: specifies the EXTI lines flags to clear. | ||
| * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) | ||
| * @retval None | ||
| */ | ||
| #define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) | ||
|
|
||
| /** | ||
| * @brief Checks whether the specified EXTI line is asserted or not. | ||
| * @param __EXTI_LINE__: specifies the EXTI line to check. | ||
| * This parameter can be GPIO_PIN_x where x can be(0..15) | ||
| * @retval The new state of __EXTI_LINE__ (SET or RESET). | ||
| */ | ||
| #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) | ||
|
|
||
| /** | ||
| * @brief Clears the EXTI's line pending bits. | ||
| * @param __EXTI_LINE__: specifies the EXTI lines to clear. | ||
| * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) | ||
| * @retval None | ||
| */ | ||
| #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) | ||
|
|
||
| /** | ||
| * @brief Generates a Software interrupt on selected EXTI line. | ||
| * @param __EXTI_LINE__: specifies the EXTI line to check. | ||
| * This parameter can be GPIO_PIN_x where x can be(0..15) | ||
| * @retval None | ||
| */ | ||
| #define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__)) | ||
|
|
||
| /* Include GPIO HAL Extension module */ | ||
| #include "stm32f1xx_hal_gpio_ex.h" | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
|
|
||
| /* Exported functions --------------------------------------------------------*/ | ||
| /* Initialization and de-initialization functions *******************************/ | ||
| /** @addtogroup GPIO_Exported_Functions | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup GPIO_Exported_Functions_Group1 | ||
| * @{ | ||
| */ | ||
| void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); | ||
| void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* IO operation functions *******************************************************/ | ||
| /** @addtogroup GPIO_Exported_Functions_Group2 | ||
| * @{ | ||
| */ | ||
| GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); | ||
| void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); | ||
| void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); | ||
| HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); | ||
| void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); | ||
| void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif /* __STM32F1xx_HAL_GPIO_H */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,312 @@ | ||
| /** | ||
| ****************************************************************************** | ||
| * @file stm32f1xx_hal_tim_ex.h | ||
| * @author MCD Application Team | ||
| * @version V1.0.4 | ||
| * @date 29-April-2016 | ||
| * @brief Header file of TIM HAL Extension module. | ||
| ****************************************************************************** | ||
| * @attention | ||
| * | ||
| * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * 1. Redistributions of source code must retain the above copyright notice, | ||
| * this list of conditions and the following disclaimer. | ||
| * 2. Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the documentation | ||
| * and/or other materials provided with the distribution. | ||
| * 3. Neither the name of STMicroelectronics nor the names of its contributors | ||
| * may be used to endorse or promote products derived from this software | ||
| * without specific prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| ****************************************************************************** | ||
| */ | ||
|
|
||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||
| #ifndef __STM32F1xx_HAL_TIM_EX_H | ||
| #define __STM32F1xx_HAL_TIM_EX_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Includes ------------------------------------------------------------------*/ | ||
| #include "stm32f1xx_hal_def.h" | ||
|
|
||
| /** @addtogroup STM32F1xx_HAL_Driver | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup TIMEx | ||
| * @{ | ||
| */ | ||
|
|
||
| /* Exported types ------------------------------------------------------------*/ | ||
| /** @defgroup TIMEx_Exported_Types TIMEx Exported Types | ||
| * @{ | ||
| */ | ||
|
|
||
|
|
||
| /** | ||
| * @brief TIM Hall sensor Configuration Structure definition | ||
| */ | ||
|
|
||
| typedef struct | ||
| { | ||
|
|
||
| uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. | ||
| This parameter can be a value of @ref TIM_Input_Capture_Polarity */ | ||
|
|
||
| uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. | ||
| This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ | ||
|
|
||
| uint32_t IC1Filter; /*!< Specifies the input capture filter. | ||
| This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ | ||
| uint32_t Commutation_Delay; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. | ||
| This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ | ||
| } TIM_HallSensor_InitTypeDef; | ||
|
|
||
|
|
||
| #if defined (STM32F100xB) || defined (STM32F100xE) || \ | ||
| defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \ | ||
| defined (STM32F105xC) || defined (STM32F107xC) | ||
|
|
||
| /** | ||
| * @brief TIM Break and Dead time configuration Structure definition | ||
| */ | ||
| typedef struct | ||
| { | ||
| uint32_t OffStateRunMode; /*!< TIM off state in run mode | ||
| This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */ | ||
| uint32_t OffStateIDLEMode; /*!< TIM off state in IDLE mode | ||
| This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */ | ||
| uint32_t LockLevel; /*!< TIM Lock level | ||
| This parameter can be a value of @ref TIM_Lock_level */ | ||
| uint32_t DeadTime; /*!< TIM dead Time | ||
| This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */ | ||
| uint32_t BreakState; /*!< TIM Break State | ||
| This parameter can be a value of @ref TIM_Break_Input_enable_disable */ | ||
| uint32_t BreakPolarity; /*!< TIM Break input polarity | ||
| This parameter can be a value of @ref TIM_Break_Polarity */ | ||
| uint32_t AutomaticOutput; /*!< TIM Automatic Output Enable state | ||
| This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ | ||
| } TIM_BreakDeadTimeConfigTypeDef; | ||
|
|
||
| #endif /* defined(STM32F100xB) || defined(STM32F100xE) || */ | ||
| /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */ | ||
| /* defined(STM32F105xC) || defined(STM32F107xC) */ | ||
|
|
||
| /** | ||
| * @brief TIM Master configuration Structure definition | ||
| */ | ||
| typedef struct { | ||
| uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection | ||
| This parameter can be a value of @ref TIM_Master_Mode_Selection */ | ||
| uint32_t MasterSlaveMode; /*!< Master/slave mode selection | ||
| This parameter can be a value of @ref TIM_Master_Slave_Mode */ | ||
| }TIM_MasterConfigTypeDef; | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /* Exported constants --------------------------------------------------------*/ | ||
| #if defined (STM32F100xB) || defined (STM32F100xE) || \ | ||
| defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \ | ||
| defined (STM32F105xC) || defined (STM32F107xC) | ||
| /** @defgroup TIMEx_Exported_Constants TIMEx Exported Constants | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @defgroup TIMEx_Clock_Filter TIMEx Clock Filter | ||
| * @{ | ||
| */ | ||
| #define IS_TIM_DEADTIME(DEADTIME) ((DEADTIME) <= 0xFF) /*!< BreakDead Time */ | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
| #endif /* defined(STM32F100xB) || defined(STM32F100xE) || */ | ||
| /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */ | ||
| /* defined(STM32F105xC) || defined(STM32F107xC) */ | ||
|
|
||
| /* Exported macro ------------------------------------------------------------*/ | ||
|
|
||
| /* Exported functions --------------------------------------------------------*/ | ||
| /** @addtogroup TIMEx_Exported_Functions | ||
| * @{ | ||
| */ | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group1 | ||
| * @{ | ||
| */ | ||
| /* Timer Hall Sensor functions **********************************************/ | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig); | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim); | ||
|
|
||
| void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim); | ||
| void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim); | ||
|
|
||
| /* Blocking mode: Polling */ | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim); | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim); | ||
| /* Non-Blocking mode: Interrupt */ | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim); | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim); | ||
| /* Non-Blocking mode: DMA */ | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length); | ||
| HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #if defined (STM32F100xB) || defined (STM32F100xE) || \ | ||
| defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \ | ||
| defined (STM32F105xC) || defined (STM32F107xC) | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group2 | ||
| * @{ | ||
| */ | ||
| /* Timer Complementary Output Compare functions *****************************/ | ||
| /* Blocking mode: Polling */ | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
|
|
||
| /* Non-Blocking mode: Interrupt */ | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
|
|
||
| /* Non-Blocking mode: DMA */ | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); | ||
| HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group3 | ||
| * @{ | ||
| */ | ||
| /* Timer Complementary PWM functions ****************************************/ | ||
| /* Blocking mode: Polling */ | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
|
|
||
| /* Non-Blocking mode: Interrupt */ | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| /* Non-Blocking mode: DMA */ | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); | ||
| HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group4 | ||
| * @{ | ||
| */ | ||
| /* Timer Complementary One Pulse functions **********************************/ | ||
| /* Blocking mode: Polling */ | ||
| HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); | ||
| HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); | ||
|
|
||
| /* Non-Blocking mode: Interrupt */ | ||
| HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); | ||
| HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); | ||
| /** | ||
| * @} | ||
| */ | ||
| #endif /* defined(STM32F100xB) || defined(STM32F100xE) || */ | ||
| /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */ | ||
| /* defined(STM32F105xC) || defined(STM32F107xC) */ | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group5 | ||
| * @{ | ||
| */ | ||
| /* Extended Control functions ************************************************/ | ||
| #if defined (STM32F100xB) || defined (STM32F100xE) || \ | ||
| defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \ | ||
| defined (STM32F105xC) || defined (STM32F107xC) | ||
| HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource); | ||
| HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource); | ||
| HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource); | ||
| HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig); | ||
| #endif /* defined(STM32F100xB) || defined(STM32F100xE) || */ | ||
| /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */ | ||
| /* defined(STM32F105xC) || defined(STM32F107xC) */ | ||
| HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** @addtogroup TIMEx_Exported_Functions_Group6 | ||
| * @{ | ||
| */ | ||
| /* Extension Callback *********************************************************/ | ||
| void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim); | ||
| void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim); | ||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #if defined (STM32F100xB) || defined (STM32F100xE) || \ | ||
| defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \ | ||
| defined (STM32F105xC) || defined (STM32F107xC) | ||
| /** @addtogroup TIMEx_Exported_Functions_Group7 | ||
| * @{ | ||
| */ | ||
| /* Extension Peripheral State functions **************************************/ | ||
| HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim); | ||
| /** | ||
| * @} | ||
| */ | ||
| #endif /* defined(STM32F100xB) || defined(STM32F100xE) || */ | ||
| /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */ | ||
| /* defined(STM32F105xC) || defined(STM32F107xC) */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
| /* End of exported functions -------------------------------------------------*/ | ||
|
|
||
| /* Private functions----------------------------------------------------------*/ | ||
| /** @defgroup TIMEx_Private_Functions TIMEx Private Functions | ||
| * @{ | ||
| */ | ||
| void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma); | ||
| /** | ||
| * @} | ||
| */ | ||
| /* End of private functions --------------------------------------------------*/ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| /** | ||
| * @} | ||
| */ | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
|
|
||
| #endif /* __STM32F1xx_HAL_TIM_EX_H */ | ||
|
|
||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |