OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3653|回复: 1

STM32F103RBT6,3.5版本的库函数编CAN发送数据程序,编译下载都没问题,就是接收不到数据

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2015-10-7
在线时间
0 小时
发表于 2015-10-7 10:56:45 | 显示全部楼层 |阅读模式
5金钱
代码如下
[mw_shl_code=c,true]#include "stm32f10x.h" #include <stdio.h> #include "stm32f10x.h" CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; CanTxMsg TxMessage; void NVIC_Config(void); void CAN_Config(void); //void LED_Display(uint8_t Ledstatus); //void Init_RxMes(CanRxMsg *RxMessage); void Delay(void); int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ /* NVIC configuration */ NVIC_Config(); /* CANs configuration */ CAN_Config();//CAN初始化 /* IT Configuration for CAN1 */ CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);//中断 /* IT Configuration for CAN2 */ // CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE); /* Infinite loop */ while(1) { TxMessage.Data[0] = 0x55; CAN_Transmit(CAN1, &TxMessage); //CAN发送 } } void CAN_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure CAN1 and CAN2 IOs **********************************************/ /* GPIOB, GPIOD and AFIO clocks enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);//GPIO时钟使能 /* Configure CAN1 RX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//PA11上拉输入 GPIO_Init(GPIOA, &GPIO_InitStructure); // /* Configure CAN2 RX pin */ // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure CAN1 TX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//PA12复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); // /* Configure CAN2 TX pin */ // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // GPIO_Init(GPIOB, &GPIO_InitStructure); /* Remap CAN1 and CAN2 GPIOs */ // GPIO_PinRemapConfig(GPIO_Remap2_CAN1 , ENABLE); // GPIO_PinRemapConfig(GPIO_Remap_CAN2, ENABLE); /* Configure CAN1 and CAN2 **************************************************/ /* CAN1 and CAN2 Periph clocks enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); //CAN时钟使能 /* CAN1 and CAN2 register init */ CAN_DeInit(CAN1); // CAN_DeInit(CAN2); /* Struct init*/ CAN_StructInit(&CAN_InitStructure); /* CAN1 and CAN2 cell init */ CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = DISABLE; CAN_InitStructure.CAN_AWUM = DISABLE; CAN_InitStructure.CAN_NART = DISABLE; CAN_InitStructure.CAN_RFLM = DISABLE; CAN_InitStructure.CAN_TXFP = ENABLE; CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; CAN_InitStructure.CAN_Prescaler =12;//波特率500K /*Initializes the CAN1 and CAN2 */ CAN_Init(CAN1, &CAN_InitStructure); // CAN_Init(CAN2, &CAN_InitStructure); /* CAN1 filter init */ CAN_FilterInitStructure.CAN_FilterNumber = 1; CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh = 0x6420; CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); /* CAN2 filter init */ // CAN_FilterInitStructure.CAN_FilterIdHigh =0x2460; // CAN_FilterInitStructure.CAN_FilterNumber = 15; // CAN_FilterInit(&CAN_FilterInitStructure); /* Transmit */ TxMessage.StdId = 0x321; TxMessage.ExtId = 0x01; TxMessage.RTR = CAN_RTR_DATA; TxMessage.IDE = CAN_ID_STD; TxMessage.DLC = 1; } void NVIC_Config(void) { // NVIC_InitTypeDef NVIC_InitStructure; // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // // NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn; // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0; // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // NVIC_Init(&NVIC_InitStructure); // NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn; // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1; // NVIC_Init(&NVIC_InitStructure); } void Delay(void) { uint16_t nTime = 0x0000; for(nTime = 0; nTime <0xFFF; nTime++) { } }[/mw_shl_code]

编译没错误没警告,下载也正常,但接收不到数据,已经使用正确的程序测试过板子,可以正常通信。是个菜鸟,在使用库函数的时候用不用对库中的其他文件进行编辑呢,例如启动文件那些。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-7 13:52:50 | 显示全部楼层
没用过库,但可以告诉你,不用编辑启动文件

你能问出启动文件的编辑这样的问题,说明库函数使用还是比较生疏,看一下开发板配套学习视频吧,从LED、KEY几个基础实验学一下库的使用过程
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 12:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表