新手入门
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2015-11-25
- 在线时间
- 1 小时
|
5金钱
#include "stm32f10x.h"
#include "stm32fx_delay.h"
#include "stdio.h"
#include "ddg_usart.h"
#include "lcd.h"
#include "exit.h"
#define S0 PAout(0)
#define S1 PAout(1)
#define S2 PAout(2)
#define S3 PAout(3)
#define OUT PBin(6)
#define PA1 GPIOA->BSRR
#define PA0 GPIOA->BRR
#define GPIOA_ODR_A (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A (GPIOA_BASE+0x08)
#define GPIOA_ODR_B (GPIOB_BASE+0x0C)
#define GPIOA_IDR_B (GPIOB_BASE+0x08)
#define GPIOA_ODR_C (GPIOC_BASE+0x0C)
#define GPIOA_IDR_C (GPIOC_BASE+0x08)
#define GPIOA_ODR_D (GPIOD_BASE+0x0C)
#define GPIOA_IDR_D (GPIOD_BASE+0x08)
#define GPIOA_ODR_E (GPIOE_BASE+0x0C)
#define GPIOA_IDR_E (GPIOE_BASE+0x08)
#define BitBand(Addr,BitNum) *((volatile unsigned long *)((Addr&0xF0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2)))
#define PAout(n) BitBand(GPIOA_ODR_A,n)
#define PAin(n) BitBand(GPIOA_IDR_A,n)
#define PBout(n) BitBand(GPIOB_ODR_A,n)
#define PBin(n) BitBand(GPIOB_IDR_A,n)
#define PCout(n) BitBand(GPIOC_ODR_A,n)
#define PCin(n) BitBand(GPIOC_IDR_A,n)
#define PDout(n) BitBand(GPIOD_ODR_A,n)
#define PDin(n) BitBand(GPIOD_IDR_A,n)
#define PEout(n) BitBand(GPIOE_ODR_A,n)
#define PEin(n) BitBand(GPIOE_IDR_A,n)
uint8_t Rgena,Ggena,Bgena;
uint16_t Ramount=10,Gamount=10,Bamount=10;
uint16_t amount;
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6) != RESET) //è·±£êÇ·ñ2úéúáËEXTI LineÖD¶Ï
{
amount++;
EXTI_ClearITPendingBit(EXTI_Line6); //Çå3yÖD¶Ï±ê־λ
}
}
void GPIO_Configuration()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void whitebalance(void)
{
EXTI_PA0_Config();
NVIC_Configuration();
S2=0;S3=0;//oìé«í¨μà
amount=0; //¿aê¼¼Æêy
DelayMs(10);
Rgena = amount; //Çó3öoìé«òò×ó
amount=0;
//----------------------------------
S2=1;S3=1;//Âìé«í¨μà
amount=0;
DelayMs(10);
Ggena = amount; //Çó3öÂìé«òò×ó
amount=0;
//----------------------------------
S2=0;S3=1;//à¶é«í¨μà
amount=0;
DelayMs(10);
Bgena = amount; //Çó3öà¶é«òò×ó
amount=0;
S2=1;S3=0;//1رÕí¨μà
}
u16 tcs3200_RED(void)
{
S2=0;S3=0;
amount=0;
DelayMs(10);
Ramount=(u32) amount*255/Rgena; //è¡RÖμ
if(Ramount>255) Ramount = 255;
return Ramount;
//amount=0;
}
u16 tcs3200_GREEN(void)
{
S2=1;S3=1;
amount=0;
DelayMs(10);
Gamount=(u32) amount*255/Ggena; //è¡GÖμ
if(Gamount>255) Gamount = 255;
return Gamount;
//amount=0;
}
u16 tcs3200_BLUE(void)
{
S2=0;S3=1;
amount=0;
DelayMs(10);
Bamount=(u32) amount*255/Bgena;//è¥BÖμ
if(Bamount>255) Bamount = 255;
return Bamount;
//amount=0;
}
int main(void)
{
Init_SysTick();
GPIO_Configuration();
EXTI_PA0_Config();
NVIC_Configuration();
USART1_Configuration();
whitebalance();
tcs3200_BLUE();
tcs3200_GREEN();
tcs3200_RED();
printf("%d\n",Ramount);
printf("%d\n",Gamount);
printf("%d\n",Bamount);
while(1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
DelayMs(1000);
}
}
int fputc(int ch,FILE *f)
{
//chËí¸øUSART1
USART_SendData(USART1, ch);
//μè′y·¢Ëííê±Ï
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET) ;
//·μ»Øch
return(ch);
}
|
|