你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F303VC的引脚功能复用问题

[复制链接]
Apple886 提问时间:2016-9-2 14:27 /
阅读主题, 点击返回1楼
收藏 1 评论16 发布时间:2016-9-2 14:27
16个回答
开心/xin男孩 回答时间:2016-9-6 08:43:52
签到签到
乞丐工程师 回答时间:2016-9-6 09:05:11
顶顶顶!!!
chifen 回答时间:2016-9-6 09:18:37
  1. void HAL_COMP_MspInit(COMP_HandleTypeDef* hcomp)
  2. {

  3.   GPIO_InitTypeDef GPIO_InitStruct;
  4.   if(hcomp->Instance==COMP3)
  5.   {
  6.   /* USER CODE BEGIN COMP3_MspInit 0 */

  7.   /* USER CODE END COMP3_MspInit 0 */
  8.   
  9.     /**COMP3 GPIO Configuration   
  10.     PA4     ------> COMP3_INM
  11.     PB14     ------> COMP3_INP
  12.     PC8     ------> COMP3_OUT
  13.     */
  14.     GPIO_InitStruct.Pin = GPIO_PIN_4;
  15.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  16.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  17.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  18.     GPIO_InitStruct.Pin = GPIO_PIN_14;
  19.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  20.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  21.     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  22.     GPIO_InitStruct.Pin = GPIO_PIN_8;
  23.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  24.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  25.     GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
  26.     GPIO_InitStruct.Alternate = GPIO_AF7_COMP3;
  27.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  28.   /* USER CODE BEGIN COMP3_MspInit 1 */

  29.   /* USER CODE END COMP3_MspInit 1 */
  30.   }
  31. }
复制代码
  1. void HAL_COMP_MspDeInit(COMP_HandleTypeDef* hcomp)
  2. {

  3.   if(hcomp->Instance==COMP3)
  4.   {
  5.   /* USER CODE BEGIN COMP3_MspDeInit 0 */

  6.   /* USER CODE END COMP3_MspDeInit 0 */
  7.   
  8.     /**COMP3 GPIO Configuration   
  9.     PA4     ------> COMP3_INM
  10.     PB14     ------> COMP3_INP
  11.     PC8     ------> COMP3_OUT
  12.     */
  13.     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);

  14.     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14);

  15.     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8);

  16.   }
  17.   /* USER CODE BEGIN COMP3_MspDeInit 1 */

  18.   /* USER CODE END COMP3_MspDeInit 1 */
  19. }
复制代码
STM32CubeMX生成的, 比较器需要有两个输入进行对比, 上面是PC8为输出,
以下更改为PA8,希望对你有帮助
  1. void HAL_COMP_MspInit(COMP_HandleTypeDef* hcomp)
  2. {

  3.   GPIO_InitTypeDef GPIO_InitStruct;
  4.   if(hcomp->Instance==COMP3)
  5.   {
  6.   /* USER CODE BEGIN COMP3_MspInit 0 */

  7.   /* USER CODE END COMP3_MspInit 0 */
  8.   
  9.     /**COMP3 GPIO Configuration   
  10.     PA4     ------> COMP3_INM
  11.     PB14     ------> COMP3_INP
  12.     PA8     ------> COMP3_OUT
  13.     */
  14.     GPIO_InitStruct.Pin = GPIO_PIN_4;
  15.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  16.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  17.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  18.     GPIO_InitStruct.Pin = GPIO_PIN_14;
  19.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  20.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  21.     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  22.     GPIO_InitStruct.Pin = GPIO_PIN_8;
  23.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  24.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  25.     GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
  26.     GPIO_InitStruct.Alternate = GPIO_AF8_COMP3;
  27.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  28.   /* USER CODE BEGIN COMP3_MspInit 1 */

  29.   /* USER CODE END COMP3_MspInit 1 */
  30.   }
  31. }

  32. void HAL_COMP_MspDeInit(COMP_HandleTypeDef* hcomp)
  33. {

  34.   if(hcomp->Instance==COMP3)
  35.   {
  36.   /* USER CODE BEGIN COMP3_MspDeInit 0 */

  37.   /* USER CODE END COMP3_MspDeInit 0 */
  38.   
  39.     /**COMP3 GPIO Configuration   
  40.     PA4     ------> COMP3_INM
  41.     PB14     ------> COMP3_INP
  42.     PA8     ------> COMP3_OUT
  43.     */
  44.     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_8);

  45.     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14);

  46.   }
  47.   /* USER CODE BEGIN COMP3_MspDeInit 1 */

  48.   /* USER CODE END COMP3_MspDeInit 1 */
  49. }
复制代码


johnson_gong 回答时间:2016-9-6 09:21:26
1.配置成复用模式
2.配置相应的输入输出模式
Dylan疾风闪电 回答时间:2016-9-6 12:11:42
本帖最后由 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);
新建位图图像.jpg



zbber 回答时间:2016-9-6 14:11:05
收藏了,感谢楼主的无私分享
anywill 回答时间:2016-10-23 17:52:22
路过,支持
12
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版