|
楼主 |
发表于 2016-1-27 16:50:31
|
显示全部楼层
- #include "main.h"
- #include <stdio.h>
- uint32_t Tick;
- static void SysTickConfig(void)
- {
- // 1ms
- if (SysTick_Config(SystemCoreClock / 1000))
- {
- while (1);
- }
- NVIC_SetPriority(SysTick_IRQn, 0x00);
- }
- void SysTick_Handler(void)
- {
- Tick++;
- }
- uint32_t Sys_GetTick(void)
- {
- return Tick;
- }
- void SysDelay(int Delay)
- {
- int tickstart = 0;
- tickstart = Sys_GetTick();
- while((Sys_GetTick() - tickstart) < Delay)
- {
- }
- }
- void delayus(int us)
- {
- int i=0,j=0;
- for (i=0;i<us;i++)
- {
- for (j=0;j<(int)(16.0*(120/120.0));j++);
- }
- }
- GPIO_InitPara GPIO_InitStructure;
- void TempGPIOInit(void)
- {
- RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOE,ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_PIN_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
- GPIO_Init(GPIOE,&GPIO_InitStructure);
- }
- void TempGPIOin(void)
- {
- GPIO_InitStructure.GPIO_Pin = GPIO_PIN_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN_FLOATING;
- GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
- GPIO_Init(GPIOE,&GPIO_InitStructure);
- }
- void TempGPIOout(void)
- {
- GPIO_InitStructure.GPIO_Pin = GPIO_PIN_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
- GPIO_Init(GPIOE,&GPIO_InitStructure);
- }
- void tempinit(void)
- {
- TempGPIOout();
- GPIO_ResetBits(GPIOE, GPIO_PIN_1);
- delayus(600);
- GPIO_SetBits(GPIOE, GPIO_PIN_1);
- delayus(60);
- TempGPIOin();
- while(GPIO_ReadInputBit(GPIOE, GPIO_PIN_1));
- while(!(GPIO_ReadInputBit(GPIOE, GPIO_PIN_1)));
- }
- char tempread(void)
- {
- char i,retd=0;
- for(i=0;i<8;i++)
- {
- retd>>=1;
- TempGPIOout();
- GPIO_ResetBits(GPIOE, GPIO_PIN_1);
- delayus(5);
- GPIO_SetBits(GPIOE, GPIO_PIN_1);
- TempGPIOin();
- if(GPIO_ReadInputBit(GPIOE, GPIO_PIN_1))
- {
- retd|=0x80;
- }
- delayus(50);
- }
- return retd;
- }
- void tempwrite(unsigned char wrd)
- {
- char i;
- for(i=0;i<8;i++)
- {
- TempGPIOout();
- GPIO_ResetBits(GPIOE, GPIO_PIN_1);
- delayus(1);
- if(wrd&0x01)
- {
- GPIO_SetBits(GPIOE, GPIO_PIN_1);
- }
- else
- {
- GPIO_ResetBits(GPIOE, GPIO_PIN_1);
- }
- delayus(50);
- GPIO_SetBits(GPIOE, GPIO_PIN_1);
- wrd>>=1;
- }
- delayus(50);
- }
- int readtemp(void)
- {
- char temp1,temp2;
- int temp,minus;
-
- tempinit();
- tempwrite(0xcc);
- tempwrite(0x44);
- tempinit();
- tempwrite(0xcc);
- tempwrite(0xbe);
- temp1=tempread();
- temp2=tempread();
- if(temp2&0xfc)
- {
- minus=1;
- temp=((temp2<<8)|temp1);
- temp=((~temp)+1);
- }
- else
- {
- minus=0;
- temp=((temp2<<8)|temp1);
- }
- temp=temp*6.25;
- if(minus==1)
- {
- temp=-temp;
- }
- return temp;
- }
- int main(void)
- {
- char temp[16]="abcd";
- SysTickConfig();
-
- TempGPIOInit();
- EvbUart1Config();
-
- tempinit();
-
- EvbUart1WriteStr("hello world\r\n");
-
- while(1)
- {
- PRINTF("ζÈ:");
- sprintf(temp,"%2.2fÉãÊ϶È\r\n",readtemp()/100.0);
- PRINTF(temp);
- SysDelay(500);
- }
-
- return 0;
- }
复制代码 |
|