{
GPIO_InitTypeDef GPIO_InitStruct;
if(hcomp->Instance==COMP3)
{
/* USER CODE BEGIN COMP3_MspInit 0 */
/* USER CODE END COMP3_MspInit 0 */
/**COMP3 GPIO Configuration
PA4 ------> COMP3_INM
PB14 ------> COMP3_INP
PC8 ------> COMP3_OUT
*/
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
GPIO_InitStruct.Alternate = GPIO_AF7_COMP3;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* USER CODE BEGIN COMP3_MspInit 1 */
/* USER CODE END COMP3_MspInit 1 */
}
}void HAL_COMP_MspDeInit(COMP_HandleTypeDef* hcomp)
{
if(hcomp->Instance==COMP3)
{
/* USER CODE BEGIN COMP3_MspDeInit 0 */
/* USER CODE END COMP3_MspDeInit 0 */
/**COMP3 GPIO Configuration
PA4 ------> COMP3_INM
PB14 ------> COMP3_INP
PC8 ------> COMP3_OUT
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14);
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8);
}
/* USER CODE BEGIN COMP3_MspDeInit 1 */
/* USER CODE END COMP3_MspDeInit 1 */
} STM32CubeMX生成的, 比较器需要有两个输入进行对比, 上面是PC8为输出,
以下更改为PA8,希望对你有帮助
void HAL_COMP_MspInit(COMP_HandleTypeDef* hcomp)
{
GPIO_InitTypeDef GPIO_InitStruct;
if(hcomp->Instance==COMP3)
{
/* USER CODE BEGIN COMP3_MspInit 0 */
/* USER CODE END COMP3_MspInit 0 */
/**COMP3 GPIO Configuration
PA4 ------> COMP3_INM
PB14 ------> COMP3_INP
PA8 ------> COMP3_OUT
*/
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
GPIO_InitStruct.Alternate = GPIO_AF8_COMP3;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN COMP3_MspInit 1 */
/* USER CODE END COMP3_MspInit 1 */
}
}
void HAL_COMP_MspDeInit(COMP_HandleTypeDef* hcomp)
{
if(hcomp->Instance==COMP3)
{
/* USER CODE BEGIN COMP3_MspDeInit 0 */
/* USER CODE END COMP3_MspDeInit 0 */
/**COMP3 GPIO Configuration
PA4 ------> COMP3_INM
PB14 ------> COMP3_INP
PA8 ------> COMP3_OUT
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_8);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14);
}
/* USER CODE BEGIN COMP3_MspDeInit 1 */
/* USER CODE END COMP3_MspDeInit 1 */
}
1.配置成复用模式
2.配置相应的输入输出模式 本帖最后由 Dylan疾风闪电 于 2016-9-6 12:19 编辑
5楼说的蛮好的。
第一步,看数据手册的映射功能:找到PA8复用功能的COMP3_OUT的配置值是AF8。
第二步,就是调用库函数来实现:以库函数为例
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOA , &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8,GPIO_AF_8);
收藏了,感谢楼主的无私分享
路过,支持:)
页:
1
[2]