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

STM32F303VC的引脚功能复用问题

[复制链接]
Apple886 提问时间:2016-9-2 14:27 /
本帖最后由 Apple886 于 2016-9-14 15:38 编辑

STM32F303VC的引脚功能复用问题 这个芯片有很多引脚复用 比如PA8,我想用复用功能的COMP3_OUT,该如何配置寄存器,STM32F303VC的数据手册里面么有这方面的说明

如何选用对应复用功能

还有如何找到Alternate function mapping?




感谢管理员的大力支持,现在问题终于解决了,首先找到了Alternate function mapping这个表,知道了GPIO的复用关系,
之前我范了一个低级错误,我的程序是用汇编写的,应该是ORR,我的程序写成了AND,最后发现了就解决了,发现F3的比较器蛮好的,可以帮忙减少模拟器件,减少成本,推荐大家敢于尝试新的东东,为了便于讨论,我建立了一个QQ群210325486,方便大家进来交流学习

1.png
2.png
3.png

评分

参与人数 1 ST金币 +5 收起 理由
zero99 + 5 赞一个!

查看全部评分

收藏 1 评论16 发布时间:2016-9-2 14:27

举报

16个回答
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. }
复制代码


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



废鱼 回答时间:2016-9-3 08:51:05
STM32固件库中的stm32f30x_gpio.h中有定义各个AF的选择。如:
/**
  * @brief  AF 8 selection
  */
#define GPIO_AF_8            ((uint8_t)0x08) /* COMP1_OUT, COMP2_OUT, COMP3_OUT, COMP4_OUT,
                                                COMP5_OUT, COMP6_OUT */
废鱼 回答时间:2016-9-2 15:28:25
看GPIO.H中的AF8定义,这里都描述了选择后的功能。
Apple886 回答时间:2016-9-2 18:39:42
安 发表于 2016-9-2 15:28
看GPIO.H中的AF8定义,这里都描述了选择后的功能。

可以说的具体点吗,谢谢
废鱼 回答时间:2016-9-3 08:56:35
在硬件手册中Table 14. Alternate functions for port A 开始介绍AF的选择:
截图_1.png
无薪税绵 回答时间:2016-9-3 11:09:01
不懂,只能帮楼主加人气了。
Stm32McuLover 回答时间:2016-9-3 15:04:06
orima 回答时间:2016-9-3 19:59:35
      
Apple886 回答时间:2016-9-5 16:06:01
安 发表于 2016-9-3 08:56
在硬件手册中Table 14. Alternate functions for port A 开始介绍AF的选择:

对,PA8,也可以配置,关键是经过多次尝试,结果都不对,比较器还是木有输出结果,你做过这样的配置吗?
废鱼 回答时间:2016-9-5 16:46:25
没有做过这样的配置,找个例程试试。
JeffJiang 回答时间:2016-9-6 08:43:52
签到签到
乞丐工程师 回答时间:2016-9-6 09:05:11
顶顶顶!!!
johnson_gong 回答时间:2016-9-6 09:21:26
1.配置成复用模式
2.配置相应的输入输出模式
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版