银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-12-03 | gingko | 初次建立 |
1.在主界面选择File–>New Project或者直接点击ACCEE TO MCU SELECTOR
2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F429IGHx。
3.配置RCC,使用外部时钟源
4.Debug选择Serial Wire,时基源选择SysTick
5.将PI3,PI4,PH14设置为GPIO_Output
6.引脚模式配置
7.配置CAN
在NVIC Settings一栏使能接收中断
8.时钟源设置,选择外部高速时钟源,配置为最大主频
9.工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可IDE我们使用的是MDK V5.27
10.点击Code Generator,进行进一步配置
1.主函数
int main(void) { int i; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_CAN1_Init(); can.initialize(); for(i = 0;i < 8;i++) { TxData[i] = i; } LED_GREEN_ON; while (1) { if(can.receive_ok_flag == 1) { can.receive_ok_flag = 0; HAL_CAN_AddTxMessage(&hcan1,&TxHeader,RxData,&TxMailbox); } } }
2.CAN初始化
void MX_CAN1_Init(void) { hcan1.Instance = CAN1; hcan1.Init.Prescaler = 15; hcan1.Init.Mode = CAN_MODE_NORMAL; hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan1.Init.TimeSeg1 = CAN_BS1_1TQ; hcan1.Init.TimeSeg2 = CAN_BS2_1TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = DISABLE; hcan1.Init.AutoWakeUp = DISABLE; hcan1.Init.AutoRetransmission = DISABLE; hcan1.Init.ReceiveFifoLocked = DISABLE; hcan1.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan1) != HAL_OK) { Error_Handler(); } }
3.HAL_CAN_RxFifo0MsgPendingCallback函数
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan1) { if (HAL_CAN_GetRxMessage(hcan1, CAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK) { Error_Handler(); } if (HAL_CAN_ActivateNotification(hcan1, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK) { /* Notification Error */ Error_Handler(); } can.receive_ok_flag = 1; }