• 大小: 2.45MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-09-13
  • 语言: 其他
  • 标签: STM32  CANopen  

资源简介

该代码使用使stm32平台成功移植CANopen协议,作从站使用

资源截图

代码片段和文件信息

#include 
#include 
#include “canfestival.h“
#include “timer_canfestival.h“
#include “stm32f10x_tim.h“
#include “led.h“

/************************** Modul variables **********************************/
// Store the last timer value to calculate the elapsed time
static TIMEVAL last_time_set = TIMEVAL_MAX;
__IO uint16_t CCR1_Val = 49152;

void setTimer(TIMEVAL value)
{
uint16_t capture = 0;

capture = TIM_GetCapture1(TIM4);
TIM_SetCompare1(TIM4 capture + value);
}

TIMEVAL getElapsedTime(void)
{
uint16_t timer = TIM_GetCounter(TIM4);
  /* Calculate the time difference */
  /* return timer > last_time_set ? timer - last_time_set : last_time_set - timer; */
/* I think this should be fixed to
   16 bit substraction */
timer = timer - last_time_set;
return timer;
}

/* TIM5 configure */
static void TIM4_Configuration(void)
{
/* 时钟及分频设置 */
  {
   TIM_TimebaseInitTypeDef  TIM_TimebaseStructure;
    /* Time base configuration */
    /* 16M / 16 = 1us */
    TIM_TimebaseStructure.TIM_Prescaler = 16- 1;
    //计数模式:向上计数
    TIM_TimebaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimebaseStructure.TIM_Period = 0xFFFF;
    TIM_TimebaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    //重新计数的起始值
    TIM_TimebaseStructure.TIM_RepetitionCounter = 0;

    TIM_TimebaseInit(TIM4 &TIM_TimebaseStructure);
}

{
TIM_OCInitTypeDef  TIM_OCInitStructure;

/* Output Compare Timing Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM4 &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM4 TIM_OCPreload_Disable);
}

/* TIM IT enable */
TIM_ITConfig(TIM4 TIM_IT_CC1 ENABLE);

  /* TIM enable counter */
  TIM_Cmd(TIM4 ENABLE);
}

static void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;

    /* Enable the TIM5 global Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

static void RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIOENABLE);

  /* TIM4 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 ENABLE);

  /* clock enable */
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA ENABLE);
}

void TIM4_start(void)
{
  RCC_Configuration();

  /* configure TIM4 for remote and encoder */
  NVIC_Configuration();
  TIM4_Configuration();
}

void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4 TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM4 TIM_IT_CC1);
last_time_set = TIM_GetCounter(TIM4);
TimeDispatch();
// ((GPIOB->ODR & GPIO_Pin_0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         53  2014-09-09 11:19  slave_canfestival\Readme.txt

     文件       3092  2014-09-09 10:54  slave_canfestival\CanFestival\drivers\STM32\STM32_timer_canfestival.c

     文件       7872  2012-04-26 12:11  slave_canfestival\CanFestival\example\Master.c

     文件        497  2012-02-04 16:08  slave_canfestival\CanFestival\example\Master.h

     文件      14420  2013-09-10 10:12  slave_canfestival\CanFestival\example\Master_board.c

     文件       3048  2009-04-06 10:30  slave_canfestival\CanFestival\example\platform_config.h

     文件       3170  2013-10-12 14:36  slave_canfestival\CanFestival\example\Slave.c

     文件        502  2012-02-04 16:08  slave_canfestival\CanFestival\example\Slave.h

     文件      12978  2014-01-10 09:34  slave_canfestival\CanFestival\example\Slave_board.c

     文件      28030  2012-04-13 10:43  slave_canfestival\CanFestival\example\TestMaster.c

     文件       1340  2012-02-04 16:08  slave_canfestival\CanFestival\example\TestMaster.h

     文件        921  2012-04-06 11:46  slave_canfestival\CanFestival\example\TestMasterSlave.h

     文件      72796  2014-01-10 10:34  slave_canfestival\CanFestival\example\TestSlave.c

     文件       8547  2013-09-07 09:58  slave_canfestival\CanFestival\example\TestSlave.h

     文件       1471  2013-08-28 16:51  slave_canfestival\CanFestival\include\can.h

     文件       3714  2013-09-10 10:40  slave_canfestival\CanFestival\include\can_driver.h

     文件      10099  2013-09-09 17:41  slave_canfestival\CanFestival\include\data.h

     文件       1698  2011-12-15 13:51  slave_canfestival\CanFestival\include\dcf.h

     文件       6014  2014-01-08 11:22  slave_canfestival\CanFestival\include\def.h

     文件       3017  2011-12-15 13:51  slave_canfestival\CanFestival\include\emcy.h

     文件       3151  2011-12-15 13:51  slave_canfestival\CanFestival\include\lifegrd.h

     文件       9306  2013-09-10 10:46  slave_canfestival\CanFestival\include\lss.h

     文件       3115  2011-12-15 13:51  slave_canfestival\CanFestival\include\nmtMaster.h

     文件       1728  2011-12-15 13:51  slave_canfestival\CanFestival\include\nmtSlave.h

     文件      12842  2011-12-15 13:51  slave_canfestival\CanFestival\include\objacces.h

     文件       4075  2011-12-15 13:51  slave_canfestival\CanFestival\include\objdictdef.h

     文件       5047  2011-12-15 13:51  slave_canfestival\CanFestival\include\pdo.h

     文件      19240  2012-04-25 15:31  slave_canfestival\CanFestival\include\sdo.h

     文件       3845  2011-12-15 13:51  slave_canfestival\CanFestival\include\states.h

     文件       2184  2011-12-15 13:51  slave_canfestival\CanFestival\include\sync.h

............此处省略246个文件信息

评论

共有 条评论