Kashish Haresh Shah / Mbed 2 deprecated HXCClientShield

Dependencies:   mbed

Committer:
kashish_mbed
Date:
Tue Apr 13 22:04:32 2021 +0000
Revision:
2:52bb5ee0a72d
Parent:
1:d4df183e5c12
Provisioning Cmd process(Not Working)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kashish_mbed 0:bacc6e701fb4 1 /******************************************************************************
kashish_mbed 0:bacc6e701fb4 2 * @file debug.c
kashish_mbed 0:bacc6e701fb4 3 * @author MCD Application Team
kashish_mbed 0:bacc6e701fb4 4 * @version V1.1.4
kashish_mbed 0:bacc6e701fb4 5 * @date 08-January-2018
kashish_mbed 0:bacc6e701fb4 6 * @brief debug API
kashish_mbed 0:bacc6e701fb4 7 ******************************************************************************
kashish_mbed 0:bacc6e701fb4 8 * @attention
kashish_mbed 0:bacc6e701fb4 9 *
kashish_mbed 0:bacc6e701fb4 10 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V.
kashish_mbed 0:bacc6e701fb4 11 * All rights reserved.</center></h2>
kashish_mbed 0:bacc6e701fb4 12 *
kashish_mbed 0:bacc6e701fb4 13 * Redistribution and use in source and binary forms, with or without
kashish_mbed 0:bacc6e701fb4 14 * modification, are permitted, provided that the following conditions are met:
kashish_mbed 0:bacc6e701fb4 15 *
kashish_mbed 0:bacc6e701fb4 16 * 1. Redistribution of source code must retain the above copyright notice,
kashish_mbed 0:bacc6e701fb4 17 * this list of conditions and the following disclaimer.
kashish_mbed 0:bacc6e701fb4 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
kashish_mbed 0:bacc6e701fb4 19 * this list of conditions and the following disclaimer in the documentation
kashish_mbed 0:bacc6e701fb4 20 * and/or other materials provided with the distribution.
kashish_mbed 0:bacc6e701fb4 21 * 3. Neither the name of STMicroelectronics nor the names of other
kashish_mbed 0:bacc6e701fb4 22 * contributors to this software may be used to endorse or promote products
kashish_mbed 0:bacc6e701fb4 23 * derived from this software without specific written permission.
kashish_mbed 0:bacc6e701fb4 24 * 4. This software, including modifications and/or derivative works of this
kashish_mbed 0:bacc6e701fb4 25 * software, must execute solely and exclusively on microcontroller or
kashish_mbed 0:bacc6e701fb4 26 * microprocessor devices manufactured by or for STMicroelectronics.
kashish_mbed 0:bacc6e701fb4 27 * 5. Redistribution and use of this software other than as permitted under
kashish_mbed 0:bacc6e701fb4 28 * this license is void and will automatically terminate your rights under
kashish_mbed 0:bacc6e701fb4 29 * this license.
kashish_mbed 0:bacc6e701fb4 30 *
kashish_mbed 0:bacc6e701fb4 31 * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
kashish_mbed 0:bacc6e701fb4 32 * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
kashish_mbed 0:bacc6e701fb4 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
kashish_mbed 0:bacc6e701fb4 34 * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
kashish_mbed 0:bacc6e701fb4 35 * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
kashish_mbed 0:bacc6e701fb4 36 * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
kashish_mbed 0:bacc6e701fb4 37 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
kashish_mbed 0:bacc6e701fb4 38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
kashish_mbed 0:bacc6e701fb4 39 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
kashish_mbed 0:bacc6e701fb4 40 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
kashish_mbed 0:bacc6e701fb4 41 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
kashish_mbed 0:bacc6e701fb4 42 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
kashish_mbed 0:bacc6e701fb4 43 *
kashish_mbed 0:bacc6e701fb4 44 ******************************************************************************
kashish_mbed 0:bacc6e701fb4 45 */
kashish_mbed 0:bacc6e701fb4 46
kashish_mbed 0:bacc6e701fb4 47 /* Includes ------------------------------------------------------------------*/
kashish_mbed 0:bacc6e701fb4 48 #include <stdarg.h>
kashish_mbed 0:bacc6e701fb4 49 #include "hw.h"
kashish_mbed 0:bacc6e701fb4 50 #include "tiny_vsnprintf.h"
kashish_mbed 0:bacc6e701fb4 51
kashish_mbed 0:bacc6e701fb4 52 static UART_HandleTypeDef debugUart;
kashish_mbed 0:bacc6e701fb4 53 static char buffTx[256];
kashish_mbed 0:bacc6e701fb4 54
kashish_mbed 0:bacc6e701fb4 55 //static bool Debug_UART_Init(void);
kashish_mbed 0:bacc6e701fb4 56
kashish_mbed 0:bacc6e701fb4 57 /**
kashish_mbed 0:bacc6e701fb4 58 * @brief Initializes the debug
kashish_mbed 0:bacc6e701fb4 59 * @param None
kashish_mbed 0:bacc6e701fb4 60 * @retval None
kashish_mbed 0:bacc6e701fb4 61 */
kashish_mbed 0:bacc6e701fb4 62 void DBG_Init( void )
kashish_mbed 0:bacc6e701fb4 63 {
kashish_mbed 0:bacc6e701fb4 64 #ifdef DEBUG
kashish_mbed 0:bacc6e701fb4 65 GPIO_InitTypeDef gpioinitstruct = {0};
kashish_mbed 0:bacc6e701fb4 66
kashish_mbed 0:bacc6e701fb4 67 /* Enable the GPIO_B Clock */
kashish_mbed 0:bacc6e701fb4 68 __HAL_RCC_GPIOB_CLK_ENABLE();
kashish_mbed 0:bacc6e701fb4 69
kashish_mbed 0:bacc6e701fb4 70 /* Configure the GPIO pin */
kashish_mbed 0:bacc6e701fb4 71 gpioinitstruct.Mode = GPIO_MODE_OUTPUT_PP;
kashish_mbed 0:bacc6e701fb4 72 gpioinitstruct.Pull = GPIO_PULLUP;
kashish_mbed 0:bacc6e701fb4 73 gpioinitstruct.Speed = GPIO_SPEED_HIGH;
kashish_mbed 0:bacc6e701fb4 74
kashish_mbed 0:bacc6e701fb4 75 gpioinitstruct.Pin = (GPIO_PIN_12 | GPIO_PIN_13| GPIO_PIN_14 | GPIO_PIN_15);
kashish_mbed 0:bacc6e701fb4 76 HAL_GPIO_Init(GPIOB, &gpioinitstruct);
kashish_mbed 0:bacc6e701fb4 77
kashish_mbed 0:bacc6e701fb4 78 /* Reset debug Pins */
kashish_mbed 0:bacc6e701fb4 79 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
kashish_mbed 0:bacc6e701fb4 80 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);
kashish_mbed 0:bacc6e701fb4 81 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
kashish_mbed 0:bacc6e701fb4 82 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);
kashish_mbed 0:bacc6e701fb4 83 #if 0
kashish_mbed 0:bacc6e701fb4 84 HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1);
kashish_mbed 0:bacc6e701fb4 85 #endif
kashish_mbed 0:bacc6e701fb4 86
kashish_mbed 0:bacc6e701fb4 87 __HAL_RCC_DBGMCU_CLK_ENABLE( );
kashish_mbed 0:bacc6e701fb4 88
kashish_mbed 0:bacc6e701fb4 89 HAL_DBGMCU_EnableDBGSleepMode( );
kashish_mbed 0:bacc6e701fb4 90 HAL_DBGMCU_EnableDBGStopMode( );
kashish_mbed 0:bacc6e701fb4 91 HAL_DBGMCU_EnableDBGStandbyMode( );
kashish_mbed 0:bacc6e701fb4 92
kashish_mbed 0:bacc6e701fb4 93 #else /* DEBUG */
kashish_mbed 0:bacc6e701fb4 94 /* sw interface off*/
kashish_mbed 0:bacc6e701fb4 95 GPIO_InitTypeDef GPIO_InitStructure = {0};
kashish_mbed 0:bacc6e701fb4 96
kashish_mbed 0:bacc6e701fb4 97 GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
kashish_mbed 0:bacc6e701fb4 98 GPIO_InitStructure.Pull = GPIO_NOPULL;
kashish_mbed 0:bacc6e701fb4 99 GPIO_InitStructure.Pin = (GPIO_PIN_13 | GPIO_PIN_14);
kashish_mbed 0:bacc6e701fb4 100 __GPIOA_CLK_ENABLE();
kashish_mbed 0:bacc6e701fb4 101 HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
kashish_mbed 0:bacc6e701fb4 102 __GPIOA_CLK_DISABLE();
kashish_mbed 0:bacc6e701fb4 103
kashish_mbed 0:bacc6e701fb4 104 // ToDo : Code below does something and code wont work. Need to investigate more.
kashish_mbed 0:bacc6e701fb4 105 //__HAL_RCC_DBGMCU_CLK_ENABLE( );
kashish_mbed 0:bacc6e701fb4 106 //HAL_DBGMCU_DisableDBGSleepMode( );
kashish_mbed 0:bacc6e701fb4 107 //HAL_DBGMCU_DisableDBGStopMode( );
kashish_mbed 0:bacc6e701fb4 108 //HAL_DBGMCU_DisableDBGStandbyMode( );
kashish_mbed 0:bacc6e701fb4 109 //__HAL_RCC_DBGMCU_CLK_DISABLE( );
kashish_mbed 0:bacc6e701fb4 110 #endif
kashish_mbed 0:bacc6e701fb4 111
kashish_mbed 0:bacc6e701fb4 112 Debug_UART_Init();
kashish_mbed 0:bacc6e701fb4 113 }
kashish_mbed 0:bacc6e701fb4 114
kashish_mbed 0:bacc6e701fb4 115 void Debug_UART_Init(void)
kashish_mbed 0:bacc6e701fb4 116 {
kashish_mbed 0:bacc6e701fb4 117 debugUart.Instance = DBG_UARTX;
kashish_mbed 0:bacc6e701fb4 118 debugUart.Init.BaudRate = 9600;
kashish_mbed 0:bacc6e701fb4 119 debugUart.Init.WordLength = UART_WORDLENGTH_8B;
kashish_mbed 0:bacc6e701fb4 120 debugUart.Init.StopBits = UART_STOPBITS_1;
kashish_mbed 0:bacc6e701fb4 121 debugUart.Init.Parity = UART_PARITY_NONE;
kashish_mbed 0:bacc6e701fb4 122 debugUart.Init.Mode = UART_MODE_TX_RX;
kashish_mbed 0:bacc6e701fb4 123 debugUart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
kashish_mbed 0:bacc6e701fb4 124 debugUart.Init.OverSampling = UART_OVERSAMPLING_16;
kashish_mbed 0:bacc6e701fb4 125 debugUart.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
kashish_mbed 0:bacc6e701fb4 126 debugUart.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
kashish_mbed 0:bacc6e701fb4 127
kashish_mbed 0:bacc6e701fb4 128 HAL_UART_Init(&debugUart);
kashish_mbed 0:bacc6e701fb4 129 }
kashish_mbed 0:bacc6e701fb4 130
kashish_mbed 0:bacc6e701fb4 131 void Debug_UART_SendBytes(const char *format, ...)
kashish_mbed 0:bacc6e701fb4 132 {
kashish_mbed 0:bacc6e701fb4 133 va_list args;
kashish_mbed 0:bacc6e701fb4 134 static __IO uint16_t len = 0;
kashish_mbed 0:bacc6e701fb4 135 uint16_t current_len;
kashish_mbed 0:bacc6e701fb4 136
kashish_mbed 0:bacc6e701fb4 137 va_start(args, format);
kashish_mbed 0:bacc6e701fb4 138
kashish_mbed 0:bacc6e701fb4 139 BACKUP_PRIMASK();
kashish_mbed 0:bacc6e701fb4 140 DISABLE_IRQ();
kashish_mbed 0:bacc6e701fb4 141 if (len != 0)
kashish_mbed 0:bacc6e701fb4 142 {
kashish_mbed 0:bacc6e701fb4 143 if (len != sizeof(buffTx))
kashish_mbed 0:bacc6e701fb4 144 {
kashish_mbed 0:bacc6e701fb4 145 current_len = len; /* use current_len instead of volatile len in below computation */
kashish_mbed 0:bacc6e701fb4 146 len = current_len + tiny_vsnprintf_like(buffTx + current_len, sizeof(buffTx) - current_len, format, args);
kashish_mbed 0:bacc6e701fb4 147 }
kashish_mbed 0:bacc6e701fb4 148 RESTORE_PRIMASK();
kashish_mbed 0:bacc6e701fb4 149 va_end(args);
kashish_mbed 0:bacc6e701fb4 150 return;
kashish_mbed 0:bacc6e701fb4 151 }
kashish_mbed 0:bacc6e701fb4 152 else
kashish_mbed 0:bacc6e701fb4 153 {
kashish_mbed 0:bacc6e701fb4 154 len = tiny_vsnprintf_like(buffTx, sizeof(buffTx), format, args);
kashish_mbed 0:bacc6e701fb4 155 }
kashish_mbed 0:bacc6e701fb4 156
kashish_mbed 0:bacc6e701fb4 157 current_len = len;
kashish_mbed 0:bacc6e701fb4 158 RESTORE_PRIMASK();
kashish_mbed 0:bacc6e701fb4 159 HAL_UART_Transmit(&debugUart, (uint8_t *)buffTx, current_len, 5000);
kashish_mbed 0:bacc6e701fb4 160 len = 0; // ToDo
kashish_mbed 0:bacc6e701fb4 161 va_end(args);
kashish_mbed 0:bacc6e701fb4 162 }
kashish_mbed 0:bacc6e701fb4 163
kashish_mbed 1:d4df183e5c12 164 uint8_t Debug_Read_Char(char * c)
kashish_mbed 1:d4df183e5c12 165 {
kashish_mbed 2:52bb5ee0a72d 166 if(HW_UART_Modem_IsNewCharReceived()){
kashish_mbed 2:52bb5ee0a72d 167 HW_UART_Modem_GetNewChar();
kashish_mbed 1:d4df183e5c12 168 // DBG_PRINTF("Debug RX %c \n\r",*c);
kashish_mbed 1:d4df183e5c12 169 return 1;
kashish_mbed 1:d4df183e5c12 170 }
kashish_mbed 1:d4df183e5c12 171 return 0;
kashish_mbed 1:d4df183e5c12 172 }
kashish_mbed 1:d4df183e5c12 173
kashish_mbed 1:d4df183e5c12 174 void Debug_Reset_Input_Buffer(void)
kashish_mbed 1:d4df183e5c12 175 {
kashish_mbed 2:52bb5ee0a72d 176 HW_UART_ResetBuffer();
kashish_mbed 1:d4df183e5c12 177 }
kashish_mbed 1:d4df183e5c12 178
kashish_mbed 0:bacc6e701fb4 179 /**
kashish_mbed 0:bacc6e701fb4 180 * @brief Error_Handler
kashish_mbed 0:bacc6e701fb4 181 * @param None
kashish_mbed 0:bacc6e701fb4 182 * @retval None
kashish_mbed 0:bacc6e701fb4 183 */
kashish_mbed 0:bacc6e701fb4 184 void Error_Handler( void )
kashish_mbed 0:bacc6e701fb4 185 {
kashish_mbed 0:bacc6e701fb4 186 DBG_PRINTF("Error_Handler\n\r");
kashish_mbed 0:bacc6e701fb4 187 while(1);
kashish_mbed 0:bacc6e701fb4 188 }
kashish_mbed 0:bacc6e701fb4 189
kashish_mbed 0:bacc6e701fb4 190 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
kashish_mbed 0:bacc6e701fb4 191
kashish_mbed 0:bacc6e701fb4 192
kashish_mbed 0:bacc6e701fb4 193