你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3307|回复: 2

【ST学习小组】STM32F103的CAN 通信之从控器部分

[复制链接]

19

主题

184

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2012-6-26 11:14:22 | 显示全部楼层 |阅读模式
 接上面的

            
【ST学习小组】STM32F103的CAN 通信之主控器
            
 
https://www.eefocus.com/bbs/article_244_380394.html
 
下面是从控器部分代码:
main.c部分代码

/******************** (C) COPYRIGHT *******************************************
* File Name          : main.c
* Author             : MJQ         
* Version            : V1.0
* 环境                                 : mdk423-固件库V3.5版本、
* 芯片                                 : STM32F103VB-ALIENTEK开发板 
* Date               : 2012-04-12
* Description        : 外部中断函数,按key0 led1灭串口发送0xaa、按key1 led2灭串口发送0x55、
                                           接收到电脑发送数据或按PA0时,led1、led2全亮
* 定义                                 :                LED1-------PA8
                                                LED2-------PD2
                                                KEY0-------PA13
                                                KEY1-------PA15       
                                                TXD1-------PA9
                                                RXD1-------PA10
                                                EXTI0------PA0
********************************************************************************/
/*---------------------Includes------------------------------------------------*/
#include "stm32f10x.h" 
#include "misc.h"
#include "led.h"
#include "key.h"
#include "usart.h"
//#include "exti.h"
#include "can.h"
 
void RCC_Configuration(void);  
void Delay(__IO uint32_t nCount);
 
//___________________Global Variable declare________
u8 CAN_TransmitDataBuf[8];
u8 ADC_num=0;
u16 ADC_Data0[10];
u16 ADC_Data1[10];
u16 ADC_Data2[10];
u16 ADC_Data3[10];
 
//______________________________________________
 
 
//___________________________ADC modue__________
 
void  Adc_Init(void)
{    
        //先初始化IO口

         RCC->APB2ENR|=1APB2ENR|=1
回复

使用道具 举报

19

主题

184

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-6-26 11:15:17 | 显示全部楼层

回复:【ST学习小组】STM32F103的CAN 通信之从控器部分

 CAN。部分代码
 
#include "can.h"
 
u16 ret;
/******************CAN1中断配置函数*********************************************/
//优先级:0
//中断服务程序:USB_LP_CAN1_RX0_IRQn------stm32f10x_it.
void CAN_NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
 
  /* Enable CAN1 RX0 interrupt IRQ channel */
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
/******************CAN1端口配置函数*********************************************/
//引脚:CAN1RX-PA8、CAN1Tx-PB8
//说明:开启端口B的时钟、CAN1的时钟
void CAN_GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
 
  /* Configure CAN pin: RX */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Configure CAN pin: TX */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
            /*端口重映射到PB8、PB9上*/
 
 // GPIO_PinRemapConfig(GPIO_Remap2_CAN1, ENABLE);        //配置CAN总线为从映射
 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);   /* CAN Periph clock enable */
 
}
 
/******************CAN1查询接受配置函数*****************************************/
//波特率:SJW-1tq、BS1-8tq、BS2-7tq、Prescaler-5;
//
u8 CAN_Polling(void)
{
  CAN_InitTypeDef        CAN_InitStructure;
  CAN_FilterInitTypeDef  CAN_FilterInitStructure;
  CanTxMsg TxMessage;
  CanRxMsg RxMessage;
  uint32_t i = 0;
  uint8_t TransmitMailbox = 0;
 
  /* CAN register init */
  CAN_DeInit(CAN1);
  CAN_StructInit(&CAN_InitStructure);
 
  /* CAN 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=DISABLE;
  CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
  CAN_InitStructure.CAN_Prescaler=5;
  CAN_Init(CAN1, &CAN_InitStructure);
 
  /* CAN filter init */
  CAN_FilterInitStructure.CAN_FilterNumber=0;
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
  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);
 
  /* transmit */
  TxMessage.StdId=0x11;
  TxMessage.RTR=CAN_RTR_DATA;
  TxMessage.IDE=CAN_ID_STD;
  TxMessage.DLC=2;
  TxMessage.Data[0]=0xAA;
  TxMessage.Data[1]=0xAA;
 
  TransmitMailbox=CAN_Transmit(CAN1, &TxMessage);
  i = 0;
  while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i != 0xFF))
  {
    i++;
  }
 
  i = 0;
  while((CAN_MessagePending(CAN1, CAN_FIFO0) < 1) && (i != 0xFF))
  {
    i++;
  }
 
  /* receive */
  RxMessage.StdId=0x00;
  RxMessage.IDE=CAN_ID_STD;
  RxMessage.DLC=0;
  RxMessage.Data[0]=0x00;
  RxMessage.Data[1]=0x00;
  CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
 
  if( (RxMessage.StdId!=0x11)|(RxMessage.StdId!=0x12) )
  {
    return 1;  
  }
 
  if (RxMessage.IDE!=CAN_ID_STD)
  {
    return 1;
  }
 
  if (RxMessage.DLC!=2)
  {
    return 1;  
  }
 
  if ((RxMessage.Data[0]
回复 支持 反对

使用道具 举报

17

主题

127

回帖

0

蝴蝶豆

中级会员

最后登录
2019-2-12
发表于 2014-3-3 16:36:03 | 显示全部楼层

回复:【ST学习小组】STM32F103的CAN 通信之从控器部分

:L:L
。。。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版