|
楼主 |
发表于 2015-3-1 11:38:49
|
显示全部楼层
你好,以下是程序,谢谢了
/******************************************************************************
* Header file
******************************************************************************/
#include "all.h"
/******************************************************************************
* Constants and macros
******************************************************************************/
#define PROGRAM_VERSION "20150214V0001"
/******************************************************************************
* Global variables
******************************************************************************/
/******************************************************************************
* Local variables
******************************************************************************/
volatile uint16_t u16Ch0Value,u16Ch1Value;
volatile uint16_t u16Ch5Value;
volatile uint8_t u8IntMark;
u32 temp, temp2;
/******************************************************************************
* Local functions
******************************************************************************/
void RTC_Task(void);
void FTM2_Task(void);
void RTC_Configuration(void);
void FTM2_Configuration(void);
void Delay(uint16 x);
/******************************************************************************
* Local function prototypes
******************************************************************************/
void RTC_Configuration(void)
{
RTC_ConfigType sRTCConfig;
RTC_ConfigType *pRTCConfig = &sRTCConfig;
/* configure RTC to 1Hz interrupt frequency */
pRTCConfig->u16ModuloValue = 9;
pRTCConfig->bInterruptEn = RTC_INTERRUPT_ENABLE; /* enable interrupt */
pRTCConfig->bClockSource = RTC_CLKSRC_1KHZ; /* clock source is 1khz */
pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100; /* prescaler is 100 */
RTC_SetCallback(RTC_Task);
RTC_Init(pRTCConfig);
}
void FTM2_Configuration(void)
{
#if 0
/* Ouput FTM0 ch1 to PTB3 which is connected to J2 Pin8 */
SIM->PINSEL |= SIM_PINSEL_FTM0PS1_MASK;
/* FTM0 output compare mode, channel 1 toggles when match */
/* FTM0 output squre wave, period is 10000, pulse width is 5000 */
FTM_OutputCompareInit(FTM0, FTM_CHANNEL_CHANNEL1, FTM_OUTPUT_TOGGLE);
/* set MOD value */
// FTM_SetModValue(FTM0, 4999);
FTM_SetModValue(FTM0, 1000);
/* set C1V value */
// FTM_SetChannelValue(FTM0, FTM_CHANNEL_CHANNEL1, 2000);
/* set clock source and start the counter */
FTM_ClockSet(FTM0, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV1);
#endif
#if 0
/* configure FTM2 ch5, to measure the input wave period */
FTM_InputCaptureInit(FTM2, FTM_CHANNEL_CHANNEL5, FTM_INPUTCAPTURE_BOTHEDGE);
FTM_ClockSet(FTM2, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV1);
FTM_SetCallback(FTM2, FTM2_Task);
NVIC_EnableIRQ(FTM2_IRQn);
FTM_EnableChannelInt(FTM2, FTM_CHANNEL_CHANNEL5);
#else
/* configure FTM2 ch5, to measure the input wave period */
FTM_SetCallback(FTM2, FTM2_Task);
FTM_InputCaptureInit(FTM2, FTM_CHANNEL_CHANNEL5, FTM_INPUTCAPTURE_FALLINGEDGE);
FTM_ClockSet(FTM2, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV16);
#endif
}
void GPIO_Configuration(void)
{
GPIO_PinInit(GPIO_PTB0, GPIO_PinInput_InternalPullup); //按键SW8
GPIO_PinInit(GPIO_PTB1, GPIO_PinInput_InternalPullup); //按键SW9
// GPIO_PinInit(GPIO_PTB2, GPIO_PinInput_InternalPullup); //按键SW8
// GPIO_PinInit(GPIO_PTB3, GPIO_PinInput_InternalPullup); //按键SW9
// GPIO_PinInit(GPIO_PTB4, GPIO_PinInput_InternalPullup); //按键SW8
// GPIO_PinInit(GPIO_PTB5, GPIO_PinInput_InternalPullup); //按键SW9
// GPIO_PinInit(GPIO_PTB6, GPIO_PinInput_InternalPullup); //按键SW8
// GPIO_PinInit(GPIO_PTB7, GPIO_PinInput_InternalPullup); //按键SW9
}
void Delay(uint16 x)
{
uint16 i, j;
for(i = 0; i < x; i++) {
for(j = 0; j < 650; j++) {}
}
}
/********************************************************************/
int main (void)
{
sysinit();
RTC_Configuration();
FTM2_Configuration();
GPIO_Configuration();
// GPIO_PinInit(GPIO_PTD4, GPIO_PinOutput); //数码管1
// GPIO_PinClear(GPIO_PTD4);
// GPIO_PinInit(GPIO_PTD0, GPIO_PinOutput); //数码管2
// GPIO_PinClear(GPIO_PTD0);
// GPIO_PinInit(GPIO_PTB4, GPIO_PinOutput); //强度
// GPIO_PinClear(GPIO_PTB4);
// GPIO_PinInit(GPIO_PTB3, GPIO_PinOutput); //各图标
// GPIO_PinSet(GPIO_PTB3);
// GPIO_PinInit(GPIO_PTD3, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTD3);
// GPIO_PinInit(GPIO_PTD2, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTD2);
// GPIO_PinInit(GPIO_PTA3, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTA3);
// GPIO_PinInit(GPIO_PTA2, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTA2);
// GPIO_PinInit(GPIO_PTA1, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTA1);
// GPIO_PinInit(GPIO_PTA0, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTA0);
// GPIO_PinInit(GPIO_PTE2, GPIO_PinOutput);
// GPIO_PinClear(GPIO_PTE2);
// u8Ch = UART_GetChar(TERM_PORT);
// UART_PutChar(TERM_PORT, u8Ch);
/* echo chars received from terminal */
while(1)
{
#if 1
if(IRKeyValidFlag == TRUE) {
printf("Succeed! Key number is %d. ", IRKey);
IRKeyValidFlag = FALSE;
}
#endif
temp = GPIO_Read(GPIOB);
// temp2 = temp - 1;
}
}
/*****************************************************************************//*!
*
* @brief callback routine of RTC driver which does what you want to do at
* every RTC period.
*
* @param none
*
* @return none
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
void RTC_Task(void)
{
GPIO_PinToggle(GPIO_PTD3);
// temp = GPIO_Read(GPIOB);
// temp = 0x12345678;
UART_PutChar(TERM_PORT, temp>>24);
UART_PutChar(TERM_PORT, temp>>16);
UART_PutChar(TERM_PORT, temp>>8);
UART_PutChar(TERM_PORT, temp);
}
|
|