123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- //==================================================================
- //
- // Filename: mapp_time.c
- // Description: External Input driver.
- //
- //------------------------------------------------------------------
- //
- // version:
- // date: 08:54am, 08.Feb.2023, by dwd
- // Description:
- //
- //------------------------------------------------------------------
- //==================================================================
- /*------------------------------------------------------------------------------
- * I N C L U D E
- *------------------------------------------------------------------------------*/
- #include "stm32f0xx.h"
- #include "general.h"
- #include "main.h"
- #include "mapp_gpio.h"
- #include "mapp_time.h"
- #include "mapp_arm.h"
- #include "mapp_msg.h"
- /*------------------------------------------------------------------------------
- * D E F I N E
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * S T R U C T
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * S T A T I C - V A R I A B L E S
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * G L O B A L
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * P R O T O T Y P E
- *------------------------------------------------------------------------------*/
- #define BUS_REV_MAX 6
- static unsigned short BUS_Rev_Buf[6][150]={0};
- static unsigned char BUS_Rev_ReadIndex=0;
- static unsigned char BUS_Rev_WriteIndex=0;
- static unsigned char TIM1_cc_flag=0;
- static unsigned char TIM1_Rev_Buf[30]={0};
- unsigned char gt_busrxflag =0;
- int TIM6_init(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
- TIM_DeInit(TIM6);
- TIM_TimeBaseStructure.TIM_Prescaler = 48 - 1; //48000000/48=1M
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseStructure.TIM_Period = 100 ; //初始值 F=1M/100=10KHz
- TIM_TimeBaseInit(TIM6,&TIM_TimeBaseStructure);
-
- //=========================================================
- TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
- TIM_ITConfig(TIM6,TIM_IT_Update,DISABLE);
- TIM_ClearFlag(TIM6, TIM_FLAG_Update);
-
- NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- TIM_Cmd(TIM6, ENABLE);
- //=========================================================
-
- return 1;
-
- }
- /*----------------------------------------------------------------------
- PWM OUT :100K,PA6(TIM3_CH1);
- BUSIN: PB1(TIM3_CH4)
- TIM3->CCER &=~(1<<0);//关闭PWM输出(TIM3_CH1);OC1禁止输出
- ----------------------------------------------------------------------*/
- //----------------------------------------------------------------------
- void TIM3_PWM_Init(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_ICInitTypeDef TIM_ICInitStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
- TIM_DeInit(TIM3);
- //TIM_Prescaler:48,TIM_Period:20000 周期20ms
- TIM_TimeBaseInitStructure.TIM_Prescaler = (24-0); //1M 1us加1. 48
- TIM_TimeBaseInitStructure.TIM_Period = 17; //设置自动重装载寄存器周期值 9
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
- TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; //重复计数设置 //重复计数设置
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure); //参数初始化
- //=================================
- NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //=================================
-
- //=================================
- TIM_ICInitStructure.TIM_Channel = TIM_Channel_4; //选择输入端 IC1映射到TI4上
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; //下降沿捕获
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //通道一一对应
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频
- TIM_ICInitStructure.TIM_ICFilter =0; //IC4F=0011 配置输入滤波器 8个定时器时钟周期滤波
- TIM_ICInit(TIM3, &TIM_ICInitStructure); //初始化定时器输入捕获通道
- /* Select the TIM3 Input Trigger: TIM_TS_TI1FP1 */
- TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); //选择输入触发源trgi
- /* Select the slave Mode: Reset Mode */
- TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
- TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);
-
- TIM_ITConfig(TIM3,TIM_IT_CC4,ENABLE);
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //输出PWM
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = 8; //预设值
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
- TIM_OC1Init(TIM3,&TIM_OCInitStructure);
- TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
- TIM_CtrlPWMOutputs(TIM3, ENABLE);
- //使能标志位CC1.CC2.CC3.CC4
- TIM_Cmd(TIM3,ENABLE);
- TIM3->CCER &=~(1<<0); //默认不输出
- }
- void TIM1_Init(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_ICInitTypeDef TIM_ICInitStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
- TIM_DeInit(TIM1);
- //TIM_Prescaler:48,TIM_Period:20000 周期20ms
- TIM_TimeBaseInitStructure.TIM_Prescaler = (480-1); //480-1预分频器,100K的计数频率,10us加1.
- TIM_TimeBaseInitStructure.TIM_Period = 65535; //设置自动重装载寄存器周期值 65535
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
- TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; //重复计数设置 //重复计数设置
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
- TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure); //参数初始化
-
- //=================================
- TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //选择输入端 IC1映射到TI4上
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; //下降沿捕获
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //通道一一对应
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频
- TIM_ICInitStructure.TIM_ICFilter =0; //IC4F=0011 配置输入滤波器 8个定时器时钟周期滤波
- TIM_ICInit(TIM1, &TIM_ICInitStructure); //初始化定时器输入捕获通道
- //=================================
- NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //=================================
-
- /* Select the TIM3 Input Trigger: TIM_TS_TI1FP1 */
- //TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); //选择输入触发源trgi
- /* Select the slave Mode: Reset Mode */
- // TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
- //TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);
-
- TIM_ITConfig(TIM1,TIM_IT_CC1,ENABLE);
- //TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
- //TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
-
- //TIM_ClearITPendingBit(TIM3, TIM_IT_Update);//??????
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);//??????
- TIM_Cmd(TIM1, ENABLE);
- }
- /*------------------------------- E O F ----------------------------------------*/
|