블루 브리지 삽입식 TIM의 정시 중단Again

프로젝트 가시성 Github

1. 주요 코드

main.c
/*******************************************************************************
*    :main.c
*     :
*     :CLAY
*    :v1.0.0
*     : 2019 2 19 
*     :    LCD  
*                   1s  ,    LCD 
*******************************************************************************
*/

#include "stm32f10x.h"
#include "lcd.h"
#include "e2prom.h"
#include "stdio.h"
#include "i2c.h"
#include "adc.h"
#include "rtc.h"
#include "usart2.h"
#include "pwm.h"
#include "pwm_oc.h"
#include "pwm_ic.h"
#include "timer.h"

u32 TimingDelay = 0;
u8 RxdCnt = 0;
u8 RxdOver = 0;
u8 RxdBuf[20];
void Delay_Ms(u32 nTime);
u8 RTC_Flag = 0;
u32 tmr = 0;

//Main Body
int main(void)
{	
	u8 str[20];
	
	STM3210B_LCD_Init();
	LCD_Clear(Blue);
	LCD_SetBackColor(Blue);
	LCD_SetTextColor(White);
	
	SysTick_Config(SystemCoreClock/1000);
	
	//PWM_Init(500, 60);//500Hz 60%  //PA1
	PWM_OC_Init(500, 60);//500Hz 60%   PA1
	PWM_IC_Init();//PA7
	
	TIM4_Init(10000, 7200);//  1s
	
	while(1)
	{
		sprintf((char *)str, "     %d    ", tmr);
		LCD_DisplayStringLine(Line5, str);
	}
}

//
void Delay_Ms(u32 nTime)
{
	TimingDelay = nTime;
	while(TimingDelay != 0);	
}

timer.c
#include "stm32f10x.h"

void TIM4_Init(u16 period, u16 prescaler)
{
	NVIC_InitTypeDef NVIC_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
	
	NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
	
	TIM_TimeBaseStructure.TIM_Period = period-1;//      0xFFFF
	TIM_TimeBaseStructure.TIM_Prescaler = prescaler-1;
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
	
	TIM_Cmd(TIM4, ENABLE);//     
	TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);//         
}


timer.h
#ifndef _TIMER_H
#define _TIMER_H

void TIM4_Init(u16 period, u16 prescaler);

#endif

stm32f10x_it.c
...
extern 	u32 tmr;
void TIM4_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM4, TIM_IT_Update) == SET) 
	{
		TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
		tmr++;
		if(tmr >= 9999)
		{
			tmr = 0;
		}
	}
}
...

주의사항


1. 타이머가 끊긴 타이머 설정
2. 타이머는 시계, TIM 및 NVIC만 구성하면 됩니다.

좋은 웹페이지 즐겨찾기