#include "can.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//CAN驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2017/4/14
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
CAN_HandleTypeDef CAN1_Handler; //CAN1句柄
CAN_TxHeaderTypeDef TxHeader; //发送
CAN_RxHeaderTypeDef RxHeader; //接收
////CAN初始化
//tsjw:重新同步跳跃时间单元.范围:CAN_SJW_1TQ~CAN_SJW_4TQ
//tbs2:时间段2的时间单元. 范围:CAN_BS2_1TQ~CAN_BS2_8TQ;
//tbs1:时间段1的时间单元. 范围:CAN_BS1_1TQ~CAN_BS1_16TQ
//brp :波特率分频器.范围:1~1024; tq=(brp)*tpclk1
//波特率=Fpclk1/((tbs1+tbs2+1)*brp); 其中tbs1和tbs2我们只用关注标识符上标志的序号,例如CAN_BS2_1TQ,我们就认为tbs2=1来计算即可。
//mode:CAN_MODE_NORMAL,普通模式;CAN_MODE_LOOPBACK,回环模式;
//Fpclk1的时钟在初始化的时候设置为42M,如果设置CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_MODE_LOOPBACK);
//则波特率为:42M/((6+7+1)*6)=500Kbps
//返回值:0,初始化OK;
// 其他,初始化失败;
u8 CAN1_Mode_Init(u32 tsjw,u32 tbs2,u32 tbs1,u16 brp,u32 mode)
{
u8 res = 0;
CAN_FilterTypeDef sFilterConfig;
CAN1_Handler.Instance=CAN1;
CAN1_Handler.Init.Prescaler=brp; //分频系数(Fdiv)为brp+1
CAN1_Handler.Init.Mode=mode; //模式设置
CAN1_Handler.Init.SyncJumpWidth=tsjw; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1TQ~CAN_SJW_4TQ
CAN1_Handler.Init.TimeSeg1=tbs1; //tbs1范围CAN_BS1_1TQ~CAN_BS1_16TQ
CAN1_Handler.Init.TimeSeg2=tbs2; //tbs2范围CAN_BS2_1TQ~CAN_BS2_8TQ
CAN1_Handler.Init.TimeTriggeredMode=DISABLE; //非时间触发通信模式
CAN1_Handler.Init.AutoBusOff=DISABLE; //软件自动离线管理
CAN1_Handler.Init.AutoWakeUp=DISABLE; //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
CAN1_Handler.Init.AutoRetransmission=ENABLE; //禁止报文自动传送
CAN1_Handler.Init.ReceiveFifoLocked=DISABLE; //报文不锁定,新的覆盖旧的
CAN1_Handler.Init.TransmitFifoPriority=DISABLE; //优先级由报文标识符决定
if(HAL_CAN_Init(&CAN1_Handler)!=HAL_OK) //初始化
{
res = 1;
}
/*CAN过滤器初始化*/
sFilterConfig.FilterBank = 0; // 过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; // 工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; // 过滤器位宽为32位
sFilterConfig.FilterIdHigh = 0x0000; // 要过滤的ID高位
sFilterConfig.FilterIdLow = 0x0000; // 要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0x0000; // 过滤器高16位
sFilterConfig.FilterMaskIdLow = 0x0000; // 过滤器低16位
sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; // 过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; // 使能过滤器
sFilterConfig.SlaveStartFilterBank = 14; // 过滤器的寄存器编号
HAL_CAN_ConfigFilter(&CAN1_Handler, &sFilterConfig);
return res;
}
//CAN底层驱动,引脚配置,时钟配置,中断配置
//此函数会被HAL_CAN_Init()调用
//hcan:CAN句柄
void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_CAN1_CLK_ENABLE(); //使能CAN1时钟
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
GPIO_Initure.Pin=GPIO_PIN_11|GPIO_PIN_12; //PA11,12
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //推挽复用
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //快速
GPIO_Initure.Alternate=GPIO_AF9_CAN1; //复用为CAN1
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化
/* 初始化中断优先级 */
HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
}
//can发送一组数据(固定格式:ID为0X12,标准帧,数据帧)
//len:数据长度(最大为8)
//msg:数据指针,最大为8个字节.
//返回值:0,成功;
// 其他,失败;
u8 CAN1_Send_Msg(u8* msg,u8 len)
{
u8 res=0;
uint32_t TxMailbox;
TxHeader.ExtId = 0x1234;
TxHeader.RTR = CAN_RTR_DATA;
TxHeader.IDE = CAN_ID_EXT;
TxHeader.DLC = len;
TxHeader.TransmitGlobalTime = DISABLE;
/* 发送数据 */
if(HAL_CAN_AddTxMessage(&CAN1_Handler, &TxHeader, msg, &TxMailbox) != HAL_OK)
{
res = 1;
}
return res;
}
//can口接收数据查询
//buf:数据缓存区;
//返回值:0,无数据被收到;
// 其他,接收的数据长度;
u8 CAN1_Receive_Msg(u8 *buf)
{
u8 len = 0;
HAL_CAN_GetRxFifoFillLevel(&CAN1_Handler, CAN_RX_FIFO0);
if(HAL_CAN_GetRxMessage(&CAN1_Handler, CAN_RX_FIFO0, &RxHeader, buf) == HAL_OK)
{
len = RxHeader.DLC;
}
return len;
}
没有合适的资源?快使用搜索试试~ 我知道了~
STM32F407单片机(HAL库版本)软件例程源码- CAN通信实验.rar
共237个文件
h:120个
c:106个
txt:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 121 浏览量
2023-05-18
14:56:44
上传
评论 1
收藏 1.43MB RAR 举报
温馨提示
STM32F407单片机(HAL库版本)软件例程源码- CAN通信实验.rar
资源推荐
资源详情
资源评论
收起资源包目录
STM32F407单片机(HAL库版本)软件例程源码- CAN通信实验.rar (237个子文件)
keilkilll.bat 399B
stm32f4xx_hal_i2c.c 230KB
stm32f4xx_hal_fmpi2c.c 229KB
stm32f4xx_hal_tim.c 213KB
stm32f4xx_hal_cryp.c 210KB
stm32f4xx_hal_dfsdm.c 154KB
stm32f4xx_hal_rcc_ex.c 153KB
stm32f4xx_hal_spi.c 121KB
stm32f4xx_hal_hash.c 114KB
stm32f4xx_hal_uart.c 108KB
stm32f4xx_hal_sd.c 103KB
stm32f4xx_hal_usart.c 97KB
stm32f4xx_hal_smbus.c 97KB
stm32f4xx_hal_qspi.c 94KB
stm32f4xx_hal_irda.c 93KB
stm32f4xx_hal_mmc.c 93KB
stm32f4xx_hal_dsi.c 87KB
stm32f4xx_hal_smartcard.c 85KB
stm32f4xx_hal_can.c 82KB
stm32f4xx_hal_sai.c 81KB
stm32f4xx_hal_eth.c 81KB
stm32f4xx_hal_adc.c 77KB
stm32f4xx_hal_ltdc.c 71KB
stm32f4xx_hal_nand.c 68KB
stm32f4xx_hal_dma2d.c 67KB
stm32f4xx_hal_lptim.c 67KB
stm32f4xx_hal_tim_ex.c 66KB
stm32f4xx_hal_i2s.c 65KB
stm32f4xx_hal_rtc.c 63KB
lcd.c 61KB
stm32f4xx_hal_pcd.c 61KB
stm32f4xx_ll_fmc.c 60KB
stm32f4xx_ll_usb.c 58KB
stm32f4xx_hal_rtc_ex.c 56KB
stm32f4xx_hal_can.c 54KB
stm32f4xx_hal_spdifrx.c 53KB
stm32f4xx_ll_rcc.c 51KB
stm32f4xx_hal_flash_ex.c 51KB
stm32f4xx_ll_sdmmc.c 49KB
stm32f4xx_hal_hcd.c 47KB
stm32f4xx_hal_dac.c 45KB
stm32f4xx_ll_tim.c 45KB
stm32f4xx_ll_adc.c 43KB
stm32f4xx_hal_adc_ex.c 42KB
stm32f4xx_hal_hash_ex.c 42KB
stm32f4xx_hal_rcc.c 41KB
stm32f4xx_hal_dma.c 40KB
stm32f4xx_hal_i2s_ex.c 39KB
stm32f4xx_hal_nor.c 38KB
stm32f4xx_ll_fsmc.c 37KB
stm32f4xx_hal_dcmi.c 37KB
stm32f4xx_hal_sdram.c 35KB
stm32f4xx_hal_cec.c 32KB
stm32f4xx_ll_utils.c 32KB
stm32f4xx_ll_rtc.c 32KB
stm32f4xx_hal_pccard.c 31KB
stm32f4xx_hal_sram.c 30KB
stm32f4xx_hal_rng.c 26KB
stm32f4xx_hal_flash.c 24KB
stm32f4xx_ll_spi.c 23KB
stm32f4xx_ll_dma2d.c 23KB
stm32f4xx_hal_pwr_ex.c 23KB
stm32f4xx_hal_cryp_ex.c 22KB
stm32f4xx_hal_pwr.c 20KB
stm32f4xx_hal_gpio.c 19KB
stm32f4xx_hal.c 19KB
stm32f4xx_ll_usart.c 19KB
stm32f4xx_hal_cortex.c 19KB
stm32f4xx_ll_dma.c 18KB
usmart.c 15KB
stm32f4xx_hal_dac_ex.c 15KB
stm32f4xx_hal_wwdg.c 15KB
stm32f4xx_hal_exti.c 12KB
usmart_str.c 12KB
stm32f4xx_hal_timebase_rtc_alarm_template.c 11KB
stm32f4xx_ll_gpio.c 11KB
stm32f4xx_hal_sai_ex.c 11KB
stm32f4xx_hal_pcd_ex.c 11KB
stm32f4xx_ll_dac.c 11KB
stm32f4xx_hal_dma_ex.c 11KB
stm32f4xx_hal_timebase_rtc_wakeup_template.c 11KB
stm32f4xx_hal_crc.c 10KB
system_stm32f4xx.c 10KB
stm32f4xx_ll_lptim.c 9KB
stm32f4xx_ll_i2c.c 9KB
stm32f4xx_hal_iwdg.c 9KB
stm32f4xx_hal_fmpi2c_ex.c 8KB
stm32f4xx_ll_exti.c 7KB
stm32f4xx_hal_dcmi_ex.c 7KB
delay.c 6KB
stm32f4xx_hal_flash_ramfunc.c 6KB
stm32f4xx_hal_ltdc_ex.c 6KB
usart.c 6KB
stm32f4xx_hal_i2c_ex.c 6KB
can.c 6KB
stm32f4xx_it.c 5KB
stm32f4xx_hal_timebase_tim_template.c 5KB
sys.c 4KB
stm32f4xx_hal_msp.c 4KB
main.c 3KB
共 237 条
- 1
- 2
- 3
资源评论
- xdj2003112023-11-16资源很赞,希望多一些这类资源。
GJZGRB
- 粉丝: 1074
- 资源: 5911
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功