资源简介
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
相关资源
- stm32做的红外遥控解码程序
- 《emwin实战指南(基于STM32-ISO开发板)
- Beginning STM32: Developing with FreeRTOS libo
- stm32f103c8t6_sch.Lib
- ALIENTEK战舰STM32F1 V3开发板原理图.rar
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- CANopen使用手册_埃斯顿
- CanuMobiSim
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- 28335CAN调试程序
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
评论
共有 条评论