1.创建工程
2.配置时钟和引脚
引脚配置使能CAN
时钟配置,采用外部高速时钟
生成MDK工程后复制相关初始化函数到RTT-studio中
将void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)函数复制至broad.c文件中
将时钟配置函数复制到drv_clk.c中,只复制函数内容,不改变名字
3.使能外设
在stm32f1xx_hal_conf.h文件中取消CAN的注释符
在broad.h中添加以下代码
/*-------------------------- CAN CONFIG BEGIN --------------------------*/
#define BSP_USING_CAN
#define BSP_USING_CAN1
/*#define BSP_USING_CAN2*/
/*-------------------------- CAN CONFIG END --------------------------*/
4.添加驱动代码
将drv_can.c和drv_can.h到工程的drives目录下
注意:drv_can.c和drv_can.h在“D:\RT-ThreadStudio\repo\Extract\RT-Thread_Source_Code\RT-Thread\4.0.3\bsp\stm32\libraries\HAL_Drivers”目录下
5.实例程序
添加官网给的实例程序到application中
6.操作
下载完程序后在命令行中输入can_sample,若是程序卡死在write函数中,则在drv_can.c中的void CAN1_TX_IRQHandler(void)函数最后添加:
else
{
rt_hw_can_isr(&drv_can1.device, RT_CAN_EVENT_TX_FAIL | 0 << 8);
}