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

STM32F103C8T6 can端口映射

[复制链接]
STMCU小助手 发布时间:2023-1-7 11:58
之前在网上找了一个STM32F103C8T6关于can通信的例子,直接烧录,can不能使用,
使用示波器在VP230前后端查看没有波形,
先介绍板子硬件资源:
HSE时钟:8MHz;
MCU : STM32F103C8T6
CAN:一路;

在软件的配置中找不到任何原因,使用USB-CAN分析仪不能识别波特率,怀疑是不是因为波特率设置不对,是不是硬件设计出现错误,查找手册 《stm32f103c8t6》

041504427039166.jpg

can的发送接收引脚是在PA11 PA12,(注意:can和其他的复用)
我找的那个程序,我把原理找到看了一下,can的发送接收是在 PB8 PB9,怀疑是我的板子硬件出错了,
我的板子硬件原理图上是PA11 PA12,是按照手册来设计的,
既然硬件没有问题,应该是软件问题,看看GPIO的配置:
  1. /*CAN GPIO  */
  2. void CAN_GPIO_Config(void)
  3. {
  4.   GPIO_InitTypeDef GPIO_InitStructure;
  5.   /* GPIOB */     
  6.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);                                                                        

  7.   /* CAN1  */
  8.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

  9.   /* Configure CAN pin: RX */     // PB8
  10.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  11.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     //
  12.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  13.   
  14.   /* Configure CAN pin: TX */   // PB9
  15.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  16.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  17.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  18.   
  19.     //#define GPIO_Remap_CAN    GPIO_Remap1_CAN1
  20.   GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);   
  21.   
  22. }
复制代码

明白了,原来是把can的发送接收端口映射到了PB8、9上面了,
修改后的代码:
  1. void CAN_GPIO_Config(void)
  2. {
  3.   GPIO_InitTypeDef GPIO_InitStructure;
  4.   /* GPIOA */     
  5.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);                                                                        

  6.   /* CAN1  */
  7.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

  8.   /* Configure CAN pin: RX */     // PA11
  9.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  10.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     //
  11.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  12.   
  13.   /* Configure CAN pin: TX */   // PA12
  14.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  15.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  16.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  17.   
  18.   //#define GPIO_Remap_CAN    GPIO_Remap1_CAN1
  19.   //GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);     //取消端口映射   craigtao 2014-4-4
  20.   
  21. }
复制代码

转载自:仆人

收藏 评论0 发布时间:2023-1-7 11:58

举报

0个回答

所属标签

相似分享

官网相关资源

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