资源简介
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);
- 上一篇:视觉FANUC机器人程序
- 下一篇:TWINCAT3.zip
相关资源
- BUCK充电板
- STM32的通用定时器Timer(库函数)
- sht31 温湿度传感器stm32 实现
- 基于边缘检测的canny算法
- STM32HAL_BH1750驱动_模拟IIC
- stm32f030+PWM->IR红外(38K)自定义格式
- 基于STM32的ICM20602陀螺仪数据获取
- HY-STM32 电路原理图
- FlexCAN详解
- Keil5配置GCC编译器编译STM32工程
- 论文研究-基于改进的Canny算子的焊缝
- 论文研究-基于STM32的WiFi数据收发模块
- 学好 STM32,只要弄懂这 20 个经典项目
- canal.deployer-1.1.4-SNAPSHOT.tar.gz.crdownloa
- STM32f103c8t6编码器.zip
- 基于STM32智能窗户的设计与实现.pdf
- 电子-KBPC610.pdf
- 基于stm32的典型工控板-立创基于stm3
- 基于ARM处理器的CAN-Ethernet通信模块实
- 基于Qt与OpenCV的图片读取、保存,并利
- bootloader+上位机.rar
- 贝一特 STM32F103ZET6 V3.0核心板电路图
- STM32F1-MPU9250陀螺仪源码
- MSCAN标识符接收滤波器配置讲解
- photoscan集群操作.docx
- 基于stm32的GPRS通信
- STM32F105_OBDII_CAN CODE
- HI226HI229 6轴姿态传感器在STM32下的串口
- Cannot load info library for OpenCV解决方案文
- ADS1256 包含.c.h文件 stm32f407 SPI
评论
共有 条评论