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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版