这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 漓东e学堂 » 删删作业【~渣渣作业停止更新~】

共67条 7/7 |‹ 2 3 4 5 6 7 跳转至
菜鸟
2014-12-17 10:49:15     打赏
61楼

考完四级再更新~占个楼而已~


菜鸟
2014-12-19 10:47:08     打赏
62楼
本来我也想在帖子占坑先的明天六级完了以后好好研究一下这两次的作业~

菜鸟
2014-12-24 15:00:23     打赏
63楼

略不爽要等辣么久!!!!= = 




菜鸟
2014-12-25 16:08:50     打赏
64楼

滴答18b20 


记得添加.H文件~

没添加.H文件  按重置键调试助手只会显示双引号内容~如“config done...”


#include "stm32f10x.h"
#include "stm32_eval.h"
#include    
volatile int flag;
#define Set_B20()	 GPIO_SetBits(GPIOC, GPIO_Pin_12)//上拉关闭pc12
#define Reset_B20()	 GPIO_ResetBits(GPIOC, GPIO_Pin_12)//下拉打开pc12
#define Read_B20()	 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)//读pc状态
unsigned char Error_Flag=0;
unsigned char zf=0;
GPIO_InitTypeDef   GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef USART_ClockInitStructure;

/**************延时函数*******************/  
void delay_us(u32 n)    
{    
    u8 j;    
    while(n--)    
    for(j=0;j<10;j++);    
}      
void  delay_ms(u32 n)    
{    
    while(n--)    
    delay_us(1000);    
} 

void SysTick_Configuration(void)
{
  /* Setup SysTick Timer for 10 msec interrupts  */
  if (SysTick_Config(48000))              
  { 
    /* Capture error */ 
    while (1);
  }  
 /* Configure the SysTick handler priority */
  NVIC_SetPriority(SysTick_IRQn, 0x0);        
}

void RCC_Configuration(void)
{
	RCC_DeInit();//将RCC寄存器重设为缺省值     
  RCC_HSICmd(ENABLE);//使能内部高速晶振  
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//HSI晶振返回reset  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//选择HSI作为系统时钟   
  RCC_HSEConfig(RCC_HSE_OFF);//HSE晶振关  
  RCC_LSEConfig(RCC_LSE_OFF);//LSE晶振关  
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz  
  RCC_PLLCmd(ENABLE);//使能PLL状态  
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);//ADC时钟=PCLK/4  
  RCC_PCLK2Config(RCC_HCLK_Div1);//APB2时钟=HCLK  
  RCC_PCLK1Config(RCC_HCLK_Div2);//APB1时钟=HCLK/2  
  RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB时钟=系统时钟  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择PLL作为系统时钟  
  while(RCC_GetSYSCLKSource() != 0x08);  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_Init(GPIOD, &GPIO_InitStructure);  
  GPIO_ResetBits(GPIOD,GPIO_Pin_2);//关闭蜂鸣器  
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
} 

void USART_int(long BaudRate)
{
	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    /* PA10 USART1_Rx  */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* USARTx configured as follow:
        - BaudRate = 115200 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitStructure.USART_BaudRate = BaudRate;
  USART_InitStructure.USART_BaudRate = BaudRate;//usart传输波比特  
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//一帧传输或接收8bit  
  USART_InitStructure.USART_StopBits = USART_StopBits_1;//在帧结尾传输1个停止位  
  USART_InitStructure.USART_Parity = USART_Parity_No;//奇偶失能  
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流控制失能  
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//接收使能,发送使能  
  USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;//时钟低电平活动          
  USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;//始终低电平         
  USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;//时钟第二边缘进行数据捕获             
  USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;//最后一位数据的时钟不从SCLK输出  
  USART_ClockInit(USART1, &USART_ClockInitStructure);//使能USART1时钟  
  USART_Init(USART1, &USART_InitStructure);//初始化USART1  
  USART_Cmd(USART1, ENABLE);//使能USART1外设  
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能中断  
  USART_Cmd(USART1, ENABLE);
}

void delay_18b20(u32 nus)//18b20专属延时
{
	u16 i;
	while(nus--)
		for(i=12;i>0;i--);
}

void Init18B20(void)//初始化
{
  u8 aa=0;
  u8 count =0;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  Set_B20() ;
  delay_18b20(1);
  Reset_B20();

  delay_18b20(480);
  Set_B20();
//	delay_18b20(500);
  delay_18b20(480);

	count=0;
	aa=Read_B20();
    while(!aa && count<100)	 
   {
   	aa=Read_B20();
	count++;
   }
   if(count>=99)
   		Error_Flag=1;
	else
		Error_Flag=0;
   
}
  
unsigned char Read18B20(void)//按位读取数据
{  
unsigned char i=0;
unsigned char date=0;
u8 tempp;
   for(i=8;i>0;i--)
   {
   Reset_B20();//打开pc12
   date>>=1;//标识右移一位
   delay_18b20(1);
   Set_B20(); //关闭pc12
   delay_18b20(1);
   tempp=Read_B20();//温度读取
		 
   if(tempp)
   date|=0x80; 
	 delay_18b20(60);
	}
	return(date);
}
void Write18B20(unsigned char date)//读数据
{
	unsigned char i=0;

	for (i=8; i>0; i--)
	{
		Reset_B20(); 
		delay_18b20(1); 		
		if(date & 0x01)			
		{	
			Set_B20();
		}
		else
		{	Reset_B20();}
		delay_18b20(60);
		date>>=1; 	 
		Set_B20();
		delay_18b20(1);
			
	}
	delay_18b20(15);
}

 float Read_T()//读温度
{	
	unsigned char TUp,TDown;
	unsigned char fTemp;
	u8 TT=0;

	float Temp = 0;
	Init18B20();
	Write18B20(0xcc); 	  
	Write18B20(0x44); 	 
	Init18B20();
	Write18B20(0xcc); 	
	Write18B20(0xbe); 	
	TDown = Read18B20();   	
	TUp = Read18B20();   	
	
	if(TUp>0x7f)      
	{
		TDown=~TDown;  
		TUp=~TUp+1; 
		TUp/=8;		     
		zf=1;         
 	}
	else
		zf=0;	  

	fTemp=TDown&0x0f;		
	TUp<<=4;
	TDown>>=4;
	TT=TUp|TDown;
	Temp=TT+(float)fTemp/16;		
	return(Temp);
}
                                 
int main(void)
{
  char ID[8];  
  int i;  
  RCC_Configuration();  
  USART_int(115200);  
  SysTick_Configuration();  
  printf(" config done...\r\n");  

  delay_ms(1000);    
  Init18B20();
  Write18B20(0x33); 
  delay_18b20(20);  
  for(i=0;i<8;i++) //大神说这里要用for语句,不然只会输出printf("event 1 oc......\r\n")这句,不会继续运行
{
	ID[i] = Read18B20();//读取地址
}
  while(1)  
    {
			if(flag == 300)  
        {  
          printf("At the moment of ID is:")   ;   
          for(i=0;i<8;i++)       
        {  
          printf("%u",ID[i]);
        }  
          printf("\r\n")  ;  
        }  
        if(flag == 500)  
        {             
          printf("The Temperature is:%f\r\n",Read_T());//读取温度并输出
          printf("===================================================\r\n");  
    }  
    }  
}  
  

#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{ 
  while (1)
  {
  }
}

#endif

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
  
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART */
  USART_SendData(EVAL_COM1, (uint8_t) ch);

  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
  {}

  return ch;
}

#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{ 
  while (1)
  {
  }
}

#endif

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
 







菜鸟
2014-12-25 16:58:46     打赏
65楼
学霸加油~学渣吃饭去了~

高工
2015-01-06 21:42:19     打赏
66楼
这个也蛮好的,继续加油哇

菜鸟
2015-01-06 23:13:12     打赏
67楼

敬礼!老师辛苦了~


共67条 7/7 |‹ 2 3 4 5 6 7 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]