STM32F407 CAN 直接对CAN_MCR直接赋值,怎么写
时间: 2024-03-21 19:41:56 浏览: 127
CAN通信.zip_stm32 can通信_stm32f407_workdog_两路CAN通信_正点原子can
5星 · 资源好评率100%
在STM32F407中,可以使用以下代码直接对CAN_MCR寄存器进行赋值操作:
```c
CAN1->MCR |= CAN_MCR_INRQ; // 进入初始化模式
while (!(CAN1->MSR & CAN_MSR_INAK)); // 等待进入初始化模式
// 对CAN_MCR寄存器进行赋值操作
CAN1->MCR &= ~(CAN_MCR_SLEEP | CAN_MCR_TXFP);
CAN1->MCR |= CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_RFLM | CAN_MCR_NART | CAN_MCR_TTCM | CAN_MCR_INRQ;
// 等待CAN控制器进入初始化模式
while ((CAN1->MSR & CAN_MSR_INAK) != CAN_MSR_INAK);
// 退出初始化模式
CAN1->MCR &= ~CAN_MCR_INRQ;
while ((CAN1->MSR & CAN_MSR_INAK) == CAN_MSR_INAK);
```
需要注意的是,在进行CAN控制器操作之前,需要先对CAN时钟进行配置,以确保CAN控制器能够正常工作。以上代码中的CAN1是CAN控制器的地址,可以根据实际情况进行修改。另外,具体的赋值操作需要根据实际需求进行调整。
阅读全文