• 大小: 9KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: CAN  STM32  

资源简介

STM32 CAN的发送和接收,最详细最简单的介绍,保证一看就能立马应用上!强力推荐!

资源截图

代码片段和文件信息

/**
 ******************************************************************************
 * @file    main.c 
 * @author  David Wang
 * @date    2018-08-16
 * @brief   Main program body
 ******************************************************************************
 * @attention
 * 
 *
 ******************************************************************************
 */

/* ----------------------- Includes -----------------------------------------*/
#include 
#include “stm32f10x.h“


/* ----------------------- Defines ------------------------------------------*/
#define DEFAULT_NODEID 0x01
void Init_CAN(void);
u8 CAN_SetMsg(u8 *msgu8 len);
u8 CAN_GetMsg(u8 *msg1u8 *msg2);
void CAN1_RX0_IRQHandler(void);
u8 Rx_flag=0;
#define CAN_RX_LEN          8          //定义最大接收字节数 
u8 CAN_RX_BUF[CAN_RX_LEN];
u8 CAN_TX_BUF[CAN_RX_LEN];
u8 CAN_RX_BUF[CAN_RX_LEN]={0x08};     //接收缓冲最大8个字节.

/* ----------------------- Function prototypes ------------------------------*/
/*=============================================================================
 * Description : Main program
 * Input Para : none
 * Output Para : none
 * Return Value : none
 ============================================================================*/
int main(void)
{
Init_CAN();
while(1)
{
CAN_SetMsg(CAN_RX_BUF8);
//CAN_GetMsg(00);
CAN1_RX0_IRQHandler();
}

//初始化函数
void Init_CAN(void)
{
    GPIO_InitTypeDef       GPIO_InitStructure; 
    NVIC_InitTypeDef       NVIC_InitStructure;
    CAN_InitTypeDef        CAN_InitStructure;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;

    /* 复用功能和GPIOB端口时钟使能*/    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB ENABLE);                                                                      

    /* CAN1 模块时钟使能 */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1 ENABLE); 
/* CAN2 模块时钟使能 */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 ENABLE); 

    /* Configure CAN pin: RX */  // PB8
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
    GPIO_Init(GPIOB &GPIO_InitStructure);

    /* Configure CAN pin: TX */   // PB9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     //复用推挽输出
    GPIO_Init(GPIOB &GPIO_InitStructure);

/* Configure CAN pin: RX */  // PB5
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
    GPIO_Init(GPIOB &GPIO_InitStructure);

    /* Configure CAN pin: TX */   // PB6
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     //复用推挽输出
    GPIO_Init(GPIOB &GPIO_InitStructure);

    //重映射
    GPIO_PinRemapConfig(GPIO_Remap1_CAN1 ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_CAN2 ENABLE);

    /* Configure the NVIC Preemption Priority Bits */  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

    

评论

共有 条评论