1、CAN不能正常收发,(检查之后是我疏忽,没有开启CAN时钟)
2、但是,我将CAN时钟开启之后,并没有解决CAN收发的问题,并且还导致了新的问题,屏幕显示有问题了。花屏,并且不能界面切换。

刚开始的代码如下:液晶屏显示正常,正常按键切换画面,CAN不能收发。
static void bsp_can_gpio_init(void)
{
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_GPIO );
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_AFIO);
//RX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,CAN_RX_GPIO_PIN);
//TX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,CAN_TX_GPIO_PIN);
gpio_pin_remap_config(GPIO_CAN_FULL_REMAP, ENABLE);
}
static void bsp_can_gpio_init(void)
{
rcu_periph_clock_enable(RCU_CAN0);
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_GPIO );
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_AFIO);
//RX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,CAN_RX_GPIO_PIN);
//TX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,CAN_TX_GPIO_PIN);
gpio_pin_remap_config(GPIO_CAN_FULL_REMAP, ENABLE);
}
static void bsp_can_gpio_init(void)
{
rcu_periph_clock_enable(RCU_CAN0);
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_GPIO );
rcu_periph_clock_enable((rcu_periph_enum) CAN_RCU_AFIO);
//RX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,CAN_RX_GPIO_PIN);
//TX
gpio_init(CAN_GPIO_PORT,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,CAN_TX_GPIO_PIN);
gpio_pin_remap_config(GPIO_CAN_PARTIAL_REMAP, ENABLE); //配置成部分重映射就OK了
//gpio_pin_remap_config(GPIO_CAN_FULL_REMAP, ENABLE); //配置成全重映射还会导致我的设备的显示有问题。
}




以上4张图,加上博文:链接: 完全重映射和部分重映射分析(超详细) 【但是就像评论中说得,博主的理解不完全正确,并不是说REMAP:后边一个外设就是完全重映射,超过一个就是部分重映射】 中举例的部分。然后我就理解了,理解如下:
还是以CAN为例:我如何确定到底是部分重映射,还是完全重映射呢?

并不能说明:TIMER3_CH0就是部分重映射。。。





