La razón por la que el zumbador de la copa Blue Bridge incrustada no se puede apagar

**

La razón por la que el zumbador de la copa Blue Bridge incrustada no se puede apagar

**

Prefacio

Primero vemos el pin del timbre

Inserte la descripción de la imagen aquí
Hay dos formas de manejar los puertos IO.
Una es la multiplexación de puertos IO, que
tiene otras funciones además de la primera función del puerto IO. La otra
es la reasignación de puertos,
que redefine los atributos del puerto IO.
Desafortunadamente, nuestro zumbador está configurado en segundo lugar. . amable,
así que tenemos que cerrar el JNTRST y luego abrir el SWJ

	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);

Tenga cuidado de no escribir esto por error, de lo contrario tendrá que presionar el botón de reinicio cada vez que descargue

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

Su relación posicional es correcta a la izquierda y fácilmente malinterpretada a la derecha.

Razones por las que no se puede apagar el timbre

La razón por la que no se puede apagar es que el reloj multiplexado está encendido y se usa
la salida push-pull multiplexada
. Si se usa la salida push-pull multiplexada ,
siempre está en un nivel bajo y siempre sonando.
¿Por qué? ¿No siempre es alto y no emite pitidos?
Es increíble.
Los amigos interesados ​​pueden probarlo usted mismo
Código de error

void BEEP_Init(void)
{
    
    
  GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);

}

Código correcto

void BEEP_Init(void)
{
    
    
  GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);

}

Supongo que te gusta

Origin blog.csdn.net/m0_46179894/article/details/108335701
Recomendado
Clasificación