新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2016-7-18
- 在线时间
- 11 小时
|
20金钱
本帖最后由 frc1 于 2016-8-1 11:39 编辑
下面是程序代码,大家能帮我看看哪里出问题了么
#include "stm32f10x.h"
#include <stdio.h>
#include "stm32f10x_GPIO.h"
#include "stm32f10x_RCC.h"
#include "stm32f10x_tim.h"
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
struct __FILE { int handle; /* Add whatever is needed */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f)
{
if (DEMCR & TRCENA)
{
while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch;
}
return(ch);
}
unsigned int CountOfToggle=0;
void LED0_Config(void);
void LED0_On(void);
void LED0_Off(void);
void TIM2_Delay500MS(void);
int main(void)
{
LED0_Config();
while (1)
{
LED0_On();
TIM2_Delay500MS();
LED0_Off();
TIM2_Delay500MS();
CountOfToggle++;
printf("The Count of Toggle is %d\n",CountOfToggle);
}
}
void LED0_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIO_LED0 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* GPIO_LED0 Pin(PA8) Configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void LED0_On(void)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_8);
}
void LED0_Off(void)
{
GPIO_SetBits(GPIOA, GPIO_Pin_8);
}
void TIM2_Delay500MS()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* Enable TIM2 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* TIM2 Time Base Configuration:
TIM2CLK / (( TIM_Prescaler + 1 ) * ( TIM_Period + 1 )) = TIM2 Frequency
TIM2CLK = 72MHz, TIM2 Frequency = 2Hz,
TIM_Prescaler = 36000-1, (TIM2 Counter Clock = 2kHz), TIM_Period = 1000-1 */
TIM_TimeBaseStructure.TIM_Prescaler = 36000-1;
TIM_TimeBaseStructure.TIM_Period = 1000-1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* Clear TIM2 update pending flag */
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
/* Enable TIM2 counter */
TIM_Cmd(TIM2,ENABLE);
while (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == RESET);
}
|
|