#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--)
{
}
}
|