资源简介
该代码使用使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个文件信息
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- CANopen使用手册_埃斯顿
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
评论
共有 条评论