#include "includes.h"
#include "timer.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "stm32f10x_tim.h"
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
//void NVIC_Configuration(void);
//void USART_Configuration(void);
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data);
extern void Delay_ms(unsigned long i);
extern void LD3320_main(void);
/***********************************************************
* 名 称: 主函数
* 功 能: 程序入口
* 入口参数: 无
* 出口参数: 无
* 说 明: 无
* 调用方法: 无
**********************************************************/
int main(void)
{
/* System Clocks Configuration */
// RCC_Configuration(); //外设时钟配置
vu8 key=0;
vu8 a;
// delay_init(); //延时函数初始化
KEY_Init(); //初始化与按键连接的硬件接口
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600);
// LD3320_main(); //LD3320执行函数
TIM3_PWM_Init(899,0); //不分频。PWM频率=72000000/900=80Khz
while(1)
{
key=KEY_Scan(0); //得到键值
if(key)
{
if(key==KEY0_PRES)
{ a=1;}
if(key==KEY1_PRES)
{ a=3;}
if(key==WKUP_PRES)
{ a=2;}
//// default:
//// break;
}
switch(a)
{
case 1:
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1))
{ TIM_SetCompare2(TIM3,500);
TIM_SetCompare1(TIM3,500); }
else
{ TIM_SetCompare2(TIM3,0);
TIM_SetCompare1(TIM3,0); }
}
break;
case 2:
{
Delay_ms(10);
if(USART_RX_STA&0x8000)
{
USART_RX_STA=0;
switch(USART_RX_BUF[0]) /*对结果执行相关操作,客户修改*/
{
case 'a': /*命令“流水灯”*/
TIM_SetCompare2(TIM3,500);
break;
case 'b':
TIM_SetCompare2(TIM3,0);
break;
case 'c':
if( TIM3->CCR2 == 500|TIM3->CCR2 == 1000)
TIM_SetCompare2(TIM3,200);
break;
case 'd':
if( TIM3->CCR2 == 200| TIM3->CCR2 == 500)
TIM_SetCompare2(TIM3,1000);
break;
case 'e': /*命令“流水灯”*/
TIM_SetCompare1(TIM3,500);
break;
case 'f':
TIM_SetCompare1(TIM3,0);
break;
case 'g':
if( TIM3->CCR1 == 500|TIM3->CCR1 == 1000)
TIM_SetCompare1(TIM3,200);
break;
case 'h':
if( TIM3->CCR1 == 200| TIM3->CCR1 == 500)
TIM_SetCompare1(TIM3,1000);
break;
default:
break;
}
}
}
break;
case 3:
{ LD3320_main(); }
break;
}
}
// else Delay_ms(10);
}
/***********************************************************
* 名 称:void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
* 功 能:串口数据打印
* 入口参数:
* 出口参数:
* 说 明:
* 调用方法:
**********************************************************/
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
{
while(*Data)
{
USART_SendData(USARTx, *Data++); /*发送单个数据 */
while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);/* 检查指定的USART标志位即RESET=1时发送完成*/
}
}
/***********************************************************
* 名 称:void RCC_Configuration(void)
* 功 能:配置外设时钟
* 入口参数:
* 出口参数:
* 说 明:
* 调用方法:
**********************************************************/
void RCC_Configuration(void)
{
SystemInit();
/* Enable USART1, GPIOA, GPIOx and AFIO clocks */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE, ENABLE); //开启相关的AHP外设时钟
/* Enable USART2 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}
/**
* @brief Configures the different GPIO ports.
* @param None
* @retval : None
*/
void Delay_ms(unsigned long i)
{
while( i--)
{
}
}
|