STM32F405与STM32F407CAN配置

发布者:meirong最新更新时间:2017-10-09 来源: eefocus关键字:STM32F405  STM32F407  CAN配置 手机看文章 扫描二维码
随时随地手机看文章

STM32F405与STM32F407CAN配置略有不同,不同之处在于407多了一个电平拉高拉低模式,配置时一定要注意。

其次,要开CAN2,必须开CAN1,因为CAN1是主,CAN2是从;开了CAN中断,一定要写中断处理函数并及时清除中断标志位,否则程序会卡死。

405的配置:

    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);  

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_CAN1);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_CAN1);

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_CAN2);

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_CAN2); 

    GPIO_InitStruct.GPIO_Pin     = GPIO_Pin_12 | GPIO_Pin_13 ;

    GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_AF;

    GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;

    GPIO_Init(GPIOA, &GPIO_InitStruct);

407的配置:

    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);    

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);      

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_CAN1);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_CAN1);

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_CAN2);

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_CAN2); 

    

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12| GPIO_Pin_13;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//复用功能

    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;//上拉

    GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;

    GPIO_Init(GPIOA, &GPIO_InitStruct);


关键字:STM32F405  STM32F407  CAN配置 引用地址:STM32F405与STM32F407CAN配置

上一篇:STM32F103模拟IIC
下一篇:STM32F103基于DMA接收不定帧长USART数据

推荐阅读最新更新时间:2024-03-16 15:39

stm32f407之基本定时器TIM6&TIM7(操作寄存器)
基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。 作为定时器的配置步骤: 1. 设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。 2. 使能相关时钟。 3. 设置分频。 4. 清空计数器的值。 5. 设置自动重装寄存器的值。 6. 是否允许中断。 7. 如果允许中断,设置中断优先级,使能中断。 8. 使能计数器。 程序: /**************************
[单片机]
STM32F407的TCP编程出现客户端无法连接上服务器
单写一篇文章记录这些问题,因为有的问题实在是困扰了我太久太久了,终于解决了!!! 1.STM32F407的TCP编程,TCP_SERVER测试完全正常,TCP_CLIENT测试过程中,开发板作为客户端,出现客户端无法连接上服务器的问题 解决方法:这个问题不会出现在用路由器接入开发板和电脑的情况,只会出现在电脑和开发板用网线直连的情况,解决方法很简单,关闭电脑防火墙!!! 2.DHCP获取IP地址一致失败、获取超时等问题,只能使用静态IP地址 解决方法:DHCP,又名动态主机配置服务,它的作用是用来分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,但是分配IP地址这东西笔记本电脑
[单片机]
<font color='red'>STM32F407</font>的TCP编程出现客户端无法连接上服务器
STM32f407与STM32F103 串口采用DMA收发数据配置方法的异同
最近有个项目需要用到STM32F407ZET6这款芯片,其中有一个串口收发数据的应用。因为之前有用过STMF32F103ZET6通过DMA收发数据的方案,所以我打算移植之前的代码实现这个功能,STM32F103的DMA相关介绍参见STM32F103 DMA介绍 之前项目使用的代码如下: /* ********************************************************************************************************* * BSP_USART1_Init() * * Description : USA
[单片机]
<font color='red'>STM32f407</font>与STM32F103 串口采用DMA收发数据<font color='red'>配置</font>方法的异同
stm32f407】时钟树以及SystemInit剖析
一. 时钟树 众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。 首先让我们来看看STM32F4的时钟系统图 在STM32F4中,有5个最重要的时钟源,为HSI
[单片机]
【<font color='red'>stm32f407</font>】时钟树以及SystemInit剖析
STM32F407 入门一
一、程序执行的一般流程 CM4内核通过ICode从Flash读取程序,然后进行计算,计算过程根据程序内容可能需要通过总线从某个外设读取数据,执行数据读取后,然后又进行计算得到计算结果后,通过总线把结果数据传送到特定的外设,外设在得到数据后做出对应的动作。CM4内核整个计算过程会产生很多中间变量,所以CM4内核会与SRAM之间有频繁的数据传送过程。 二、STM32f4的寄存器组: 三、流水线具有以下特征: Cortex-M4处理器使用了一个三级流水线。流水线的3级分别为:取指,解码和执行。 执行一条分支指令或直接修改PC而发生跳转时,ARM内核有可能会清空流水线,而需要重新读取指令。 即使产生了一个中断,一
[单片机]
<font color='red'>STM32F407</font> 入门一
stm32f407】基于SRAM的内存管理
一.内存管理原理 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存管理的实现方法有很多种,他们其实最终都是要实现2个函数:malloc和free;malloc函数用于内存申请,free函数用于内存释放。 我们介绍一种比较简单的办法来实现:分块式内存管理。下面我们介绍一下该方法的实现原理,如图所示: 从上图可以看出,分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为n块,对应的内存管理表,大小也为n,内存管理表的每一个项对应内存池的一块内存。 内存管理表的项值代表的意义为:当该项值为0的时候,代表对应的内存块未被占用,当
[单片机]
【<font color='red'>stm32f407</font>】基于SRAM的内存管理
stm32f407的TIM1的中断和PWM
调试了多半天TIM1的中断和PWM,终于算是调通了。遇到了不少问题,也深入了解了TIM1的配置过程。代码如下: /************************************************************ Copyright (C), 2012-2022, yin. FileName: main.c Author: ycw Version : 1.0 Date: 2012.04.25 Description: TIM1 PWM NVIC Version: V1.0 Function List: TIM1 PWM NVIC History:
[单片机]
STM32F407(CubeMX+HAL+USB(vcp))移植rosserial和ROS通信
前言 之前尝试过移植好rosserial的stm32通过串口和ROS系统建立通信,但无奈在类似于发布IMU类似的数据量很大的消息或消息的发布频率较高时经常会出现一些问题(发布频率达不到设定要求,启动rosserial的终端会报一些警告和错误),在一般的学习中还可以,但在实际的应用中基本达不到使用要求。 写道这想说明一点:我对整个rosserial内部的通信机制也不是很了解,类似于通信速度达到多少可以满足通信速度的需求,如何测试通信速度等等问题(我也很纳闷为什么串口就会存在这些问题),如果大家有什么见解欢迎交流。 一、基于STM32CubeMX建立STM32F407USB虚拟串口基本工程 配置STM32F407单片机的时钟源
[单片机]
<font color='red'>STM32F407</font>(CubeMX+HAL+USB(vcp))移植rosserial和ROS通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved