add eeprom stuff
This commit is contained in:
parent
4739491654
commit
6a7b54dcc1
@ -51,6 +51,8 @@
|
|||||||
#define ROTARY_A_GPIO_Port GPIOB
|
#define ROTARY_A_GPIO_Port GPIOB
|
||||||
#define SWITCH_Pin GPIO_PIN_5
|
#define SWITCH_Pin GPIO_PIN_5
|
||||||
#define SWITCH_GPIO_Port GPIOB
|
#define SWITCH_GPIO_Port GPIOB
|
||||||
|
#define EEPROM_CS_Pin GPIO_PIN_6
|
||||||
|
#define EEPROM_CS_GPIO_Port GPIOB
|
||||||
#define OLED_CS_Pin GPIO_PIN_7
|
#define OLED_CS_Pin GPIO_PIN_7
|
||||||
#define OLED_CS_GPIO_Port GPIOB
|
#define OLED_CS_GPIO_Port GPIOB
|
||||||
#define OLED_DC_Pin GPIO_PIN_8
|
#define OLED_DC_Pin GPIO_PIN_8
|
||||||
|
@ -223,7 +223,7 @@ static void MX_GPIO_Init(void)
|
|||||||
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
||||||
@ -237,8 +237,8 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
||||||
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
@ -140,6 +140,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
|||||||
|
|
||||||
/**SPI1 GPIO Configuration
|
/**SPI1 GPIO Configuration
|
||||||
PA5 ------> SPI1_SCK
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
PA7 ------> SPI1_MOSI
|
PA7 ------> SPI1_MOSI
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
||||||
@ -147,6 +148,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
|||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* USER CODE BEGIN SPI1_MspInit 1 */
|
/* USER CODE BEGIN SPI1_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END SPI1_MspInit 1 */
|
/* USER CODE END SPI1_MspInit 1 */
|
||||||
@ -167,9 +173,10 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
|
|||||||
|
|
||||||
/**SPI1 GPIO Configuration
|
/**SPI1 GPIO Configuration
|
||||||
PA5 ------> SPI1_SCK
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
PA7 ------> SPI1_MOSI
|
PA7 ------> SPI1_MOSI
|
||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7);
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
|
||||||
|
|
||||||
}
|
}
|
||||||
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
||||||
|
@ -27,21 +27,23 @@ Mcu.Name=STM32F103C(8-B)Tx
|
|||||||
Mcu.Package=LQFP48
|
Mcu.Package=LQFP48
|
||||||
Mcu.Pin0=PC13-TAMPER-RTC
|
Mcu.Pin0=PC13-TAMPER-RTC
|
||||||
Mcu.Pin1=PC14-OSC32_IN
|
Mcu.Pin1=PC14-OSC32_IN
|
||||||
Mcu.Pin10=PB4
|
Mcu.Pin10=PB3
|
||||||
Mcu.Pin11=PB5
|
Mcu.Pin11=PB4
|
||||||
Mcu.Pin12=PB7
|
Mcu.Pin12=PB5
|
||||||
Mcu.Pin13=PB8
|
Mcu.Pin13=PB6
|
||||||
Mcu.Pin14=PB9
|
Mcu.Pin14=PB7
|
||||||
Mcu.Pin15=VP_SYS_VS_Systick
|
Mcu.Pin15=PB8
|
||||||
|
Mcu.Pin16=PB9
|
||||||
|
Mcu.Pin17=VP_SYS_VS_Systick
|
||||||
Mcu.Pin2=PD0-OSC_IN
|
Mcu.Pin2=PD0-OSC_IN
|
||||||
Mcu.Pin3=PD1-OSC_OUT
|
Mcu.Pin3=PD1-OSC_OUT
|
||||||
Mcu.Pin4=PA0-WKUP
|
Mcu.Pin4=PA0-WKUP
|
||||||
Mcu.Pin5=PA5
|
Mcu.Pin5=PA5
|
||||||
Mcu.Pin6=PA7
|
Mcu.Pin6=PA6
|
||||||
Mcu.Pin7=PA13
|
Mcu.Pin7=PA7
|
||||||
Mcu.Pin8=PA14
|
Mcu.Pin8=PA13
|
||||||
Mcu.Pin9=PB3
|
Mcu.Pin9=PA14
|
||||||
Mcu.PinsNb=16
|
Mcu.PinsNb=18
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32F103C8Tx
|
Mcu.UserName=STM32F103C8Tx
|
||||||
MxCube.Version=4.16.1
|
MxCube.Version=4.16.1
|
||||||
@ -64,9 +66,11 @@ PA13.Mode=Serial_Wire
|
|||||||
PA13.Signal=SYS_JTMS-SWDIO
|
PA13.Signal=SYS_JTMS-SWDIO
|
||||||
PA14.Mode=Serial_Wire
|
PA14.Mode=Serial_Wire
|
||||||
PA14.Signal=SYS_JTCK-SWCLK
|
PA14.Signal=SYS_JTCK-SWCLK
|
||||||
PA5.Mode=TX_Only_Simplex_Unidirect_Master
|
PA5.Mode=Full_Duplex_Master
|
||||||
PA5.Signal=SPI1_SCK
|
PA5.Signal=SPI1_SCK
|
||||||
PA7.Mode=TX_Only_Simplex_Unidirect_Master
|
PA6.Mode=Full_Duplex_Master
|
||||||
|
PA6.Signal=SPI1_MISO
|
||||||
|
PA7.Mode=Full_Duplex_Master
|
||||||
PA7.Signal=SPI1_MOSI
|
PA7.Signal=SPI1_MOSI
|
||||||
PB3.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
PB3.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
PB3.GPIO_Label=ROTARY_B
|
PB3.GPIO_Label=ROTARY_B
|
||||||
@ -86,6 +90,10 @@ PB5.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
|
|||||||
PB5.GPIO_PuPd=GPIO_PULLUP
|
PB5.GPIO_PuPd=GPIO_PULLUP
|
||||||
PB5.Locked=true
|
PB5.Locked=true
|
||||||
PB5.Signal=GPXTI5
|
PB5.Signal=GPXTI5
|
||||||
|
PB6.GPIOParameters=GPIO_Label
|
||||||
|
PB6.GPIO_Label=EEPROM_CS
|
||||||
|
PB6.Locked=true
|
||||||
|
PB6.Signal=GPIO_Output
|
||||||
PB7.GPIOParameters=GPIO_Label
|
PB7.GPIOParameters=GPIO_Label
|
||||||
PB7.GPIO_Label=OLED_CS
|
PB7.GPIO_Label=OLED_CS
|
||||||
PB7.Locked=true
|
PB7.Locked=true
|
||||||
|
@ -51,6 +51,8 @@
|
|||||||
#define ROTARY_A_GPIO_Port GPIOB
|
#define ROTARY_A_GPIO_Port GPIOB
|
||||||
#define SWITCH_Pin GPIO_PIN_5
|
#define SWITCH_Pin GPIO_PIN_5
|
||||||
#define SWITCH_GPIO_Port GPIOB
|
#define SWITCH_GPIO_Port GPIOB
|
||||||
|
#define EEPROM_CS_Pin GPIO_PIN_6
|
||||||
|
#define EEPROM_CS_GPIO_Port GPIOB
|
||||||
#define OLED_CS_Pin GPIO_PIN_7
|
#define OLED_CS_Pin GPIO_PIN_7
|
||||||
#define OLED_CS_GPIO_Port GPIOB
|
#define OLED_CS_GPIO_Port GPIOB
|
||||||
#define OLED_DC_Pin GPIO_PIN_8
|
#define OLED_DC_Pin GPIO_PIN_8
|
||||||
|
55
my_src/eeprom.c
Normal file
55
my_src/eeprom.c
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* eeprom.c
|
||||||
|
*
|
||||||
|
* Created on: Jun 7, 2017
|
||||||
|
* Author: wn
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "eeprom.h"
|
||||||
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define HIGH GPIO_PIN_SET
|
||||||
|
#define LOW GPIO_PIN_RESET
|
||||||
|
|
||||||
|
extern SPI_HandleTypeDef hspi1;
|
||||||
|
|
||||||
|
|
||||||
|
const uint8_t EEPROM_READ = 0x03;
|
||||||
|
const uint8_t EEPROM_WRITE = 0x02;
|
||||||
|
const uint8_t EEPROM_WRDI = 0x04;
|
||||||
|
const uint8_t EEPROM_WREN = 0x06;
|
||||||
|
const uint8_t EEPROM_RDSR = 0x05;
|
||||||
|
const uint8_t EEPROM_WRSR = 0x01;
|
||||||
|
|
||||||
|
|
||||||
|
static void __EEPROM_CS(GPIO_PinState v) {
|
||||||
|
HAL_GPIO_WritePin(EEPROM_CS_GPIO_Port, EEPROM_CS_Pin, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __HAL_SPI_Transmit_One_ByValue(SPI_HandleTypeDef *hspi, uint8_t c) {
|
||||||
|
HAL_SPI_Transmit(hspi, &c, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len) {
|
||||||
|
__EEPROM_CS(LOW);
|
||||||
|
|
||||||
|
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_WREN);
|
||||||
|
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_WRITE);
|
||||||
|
HAL_SPI_Transmit(&hspi1, (uint8_t*)&addr, 2, 0);
|
||||||
|
HAL_SPI_Transmit(&hspi1, buf, len, 0);
|
||||||
|
|
||||||
|
__EEPROM_CS(HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
|
void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len) {
|
||||||
|
__EEPROM_CS(LOW);
|
||||||
|
|
||||||
|
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_READ);
|
||||||
|
HAL_SPI_Transmit(&hspi1, (uint8_t*)&addr, 2, 0);
|
||||||
|
HAL_SPI_Receive(&hspi1, buf, len, 0);
|
||||||
|
|
||||||
|
__EEPROM_CS(HIGH);
|
||||||
|
|
||||||
|
}
|
18
my_src/eeprom.h
Normal file
18
my_src/eeprom.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* eeprom.h
|
||||||
|
*
|
||||||
|
* Created on: Jun 7, 2017
|
||||||
|
* Author: wn
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EEPROM_H_
|
||||||
|
#define EEPROM_H_
|
||||||
|
|
||||||
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
|
||||||
|
void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len);
|
||||||
|
void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* EEPROM_H_ */
|
@ -227,7 +227,7 @@ static void MX_GPIO_Init(void)
|
|||||||
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
||||||
@ -241,8 +241,8 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
||||||
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
@ -223,7 +223,7 @@ static void MX_GPIO_Init(void)
|
|||||||
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
/*Configure GPIO pins : LED_Pin ERROR_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
|
||||||
@ -237,8 +237,8 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
|
||||||
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
@ -140,6 +140,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
|||||||
|
|
||||||
/**SPI1 GPIO Configuration
|
/**SPI1 GPIO Configuration
|
||||||
PA5 ------> SPI1_SCK
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
PA7 ------> SPI1_MOSI
|
PA7 ------> SPI1_MOSI
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
||||||
@ -147,6 +148,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
|||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* USER CODE BEGIN SPI1_MspInit 1 */
|
/* USER CODE BEGIN SPI1_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END SPI1_MspInit 1 */
|
/* USER CODE END SPI1_MspInit 1 */
|
||||||
@ -167,9 +173,10 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
|
|||||||
|
|
||||||
/**SPI1 GPIO Configuration
|
/**SPI1 GPIO Configuration
|
||||||
PA5 ------> SPI1_SCK
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
PA7 ------> SPI1_MOSI
|
PA7 ------> SPI1_MOSI
|
||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7);
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
|
||||||
|
|
||||||
}
|
}
|
||||||
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user