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

共12条 2/2 1 2 跳转至
菜鸟
2014-12-25 23:19:06     打赏
11楼
#include "stm32f10x.h"  
#include "stm32_eval.h"  
#include "delay.h"  
#include   
volatile int flag;  
#define Set_B20()    GPIO_SetBits(GPIOC, GPIO_Pin_12)    
#define Reset_B20()  GPIO_ResetBits(GPIOC, GPIO_Pin_12)  
#define Read_B20()   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)
unsigned char Error_Flag=0;  
unsigned char zf=0;  
void SysTick_Configuration(void)  
{  
  if (SysTick_Config(48000))               45000/45ms=1ms    
  {   
    /* Capture error */   
    while (1);  
  }    
 /* Configure the SysTick handler priority */  
  NVIC_SetPriority(SysTick_IRQn, 0x0);                  
}  
  
  
/** @addtogroup STM32F10x_StdPeriph_Examples 
  * @{ 
  */  
  
/** @addtogroup EXTI_Config 
  * @{ 
  */   
  
/* Private typedef -----------------------------------------------------------*/  
/* Private define ------------------------------------------------------------*/  
/* Private macro -------------------------------------------------------------*/  
/* Private variables ---------------------------------------------------------*/  
GPIO_InitTypeDef   GPIO_InitStructure;  
USART_InitTypeDef USART_InitStructure;  
USART_ClockInitTypeDef USART_ClockInitStructure;  
  
void RCC_Configuration(void)  
{  
  RCC_DeInit();    
      RCC_HSICmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); 
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
    
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF); //设置外部低速晶振,LSE晶振OFF    
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_5); //   RCC_PLLMul_ 设置PLL时钟频率为 5*8 MHz    
      
  RCC_PLLCmd(ENABLE); 
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//L就绪   
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);  
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  while(RCC_GetSYSCLKSource() != 0x08);
      
//  SystemInit();  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
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_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_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;  
    USART_ClockInit(USART1, &USART_ClockInitStructure);  
  USART_Init(USART1, &USART_InitStructure);  
  USART_Cmd(USART1, ENABLE);  
    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)  //18B20初始化   
{  
   u8 aa=0;  
   u8 count =0;  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能PC时钟   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//选择PC12  
  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(480);  
   count=0;  
    aa=Read_B20();  
    while(!aa && count<99)     
   {  
    aa=Read_B20();  
    count++;  
   }  
   if(count>=99) //大于99次 报错 为1    
        Error_Flag=1;  
    else  
        Error_Flag=0;   //未达99次 正常     
}  
    
unsigned char Read18B20(void)  
{    
unsigned char i=0;  
unsigned char date=0;  
u8 tempp;  
   for(i=8;i>0;i--) 
   {  
  
   Reset_B20(); 
   date>>=1;   
   delay_18b20(1);  
   Set_B20();  //拉高电平,关闭   
    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;      //date右移一位    
         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();//1820初始化    
    Write18B20(0xcc);        
    Write18B20(0x44);      
    Init18B20();//1820   
    Write18B20(0xcc);  
    Write18B20(0xbe);    
   
int main(void)  
{  
     int i;     unsigned char ID[8];  
  /*!< At this stage the microcontroller clock setting is already configured,  
       this is done through SystemInit() function which is called from startup 
       file (startup_stm32f10x_xx.s) before to branch to application main. 
       To reconfigure the default setting of SystemInit() function, refer to 
       system_stm32f10x.c file 
     */       
         
  /* System Clocks Configuration */  
  RCC_Configuration();  
USART_int(115200);  
    Init18B20();//初始化18B20  
    SysTick_Configuration();
      
    printf(" config done...\r\n");  
 Write18B20(0x33);   
     for(i=0;i<8;i++)   
    {    
        ID[i]=Read18B20();    
    }    
    delay_ms(1000);  
      
    while(1)  
    {  
        if(flag == 400){  
            printf("The Temperature is:%f\r\n",Read_T());//400us读一次温度   
}  
  if(flag == 300){         //300us读一次id    
              printf("The id is:");    
                for(i=0;i<8;i++)            
          {         
                printf("%u",ID[i]);        
                    if(i==7){printf("\r\n");    }    
        }     
      }    
}  
}  
#ifdef  USE_FULL_ASSERT  
  
/** 
  * @brief  Reports the name of the source file and the source line number 
  *         where the assert_param error has occurred. 
  * @param  file: pointer to the source file name 
  * @param  line: assert_param error line source number 
  * @retval None 
  */  
void assert_failed(uint8_t* file, uint32_t line)  
{   
  /* User can add his own implementation to report the file name and line number, 
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  
  /* Infinite loop */  
  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__ */    
/** 
  * @brief  Retargets the C library printf function to the USART. 
  * @param  None 
  * @retval None 
  */  
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  
  
/** 
  * @brief  Reports the name of the source file and the source line number 
  *         where the assert_param error has occurred. 
  * @param  file: pointer to the source file name 
  * @param  line: assert_param error line source number 
  * @retval None 
  */  
void assert_failed(uint8_t* file, uint32_t line)  
{   
  /* User can add his own implementation to report the file name and line number, 
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  
  /* Infinite loop */  
  while (1)  
  {  
  }  
}  
<p>  
    #endif  
</p>  
  
<p>  
    <br>  
  
</p>  
  
<p>  
    <br>  
  
</p>  

 


菜鸟
2014-12-25 23:20:21     打赏
12楼
#include "stm32f10x.h"  
#include "stm32_eval.h"  
#include "delay.h"  
#include   
volatile int flag;  
#define Set_B20()    GPIO_SetBits(GPIOC, GPIO_Pin_12)    
#define Reset_B20()  GPIO_ResetBits(GPIOC, GPIO_Pin_12)  
#define Read_B20()   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)
unsigned char Error_Flag=0;  
unsigned char zf=0;  
void SysTick_Configuration(void)  
{  
  if (SysTick_Config(48000))               45000/45ms=1ms    
  {   
    /* Capture error */   
    while (1);  
  }    
 /* Configure the SysTick handler priority */  
  NVIC_SetPriority(SysTick_IRQn, 0x0);                  
}  
  
  
/** @addtogroup STM32F10x_StdPeriph_Examples 
  * @{ 
  */  
  
/** @addtogroup EXTI_Config 
  * @{ 
  */   
  
/* Private typedef -----------------------------------------------------------*/  
/* Private define ------------------------------------------------------------*/  
/* Private macro -------------------------------------------------------------*/  
/* Private variables ---------------------------------------------------------*/  
GPIO_InitTypeDef   GPIO_InitStructure;  
USART_InitTypeDef USART_InitStructure;  
USART_ClockInitTypeDef USART_ClockInitStructure;  
  
void RCC_Configuration(void)  
{  
  RCC_DeInit();    
      RCC_HSICmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); 
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
    
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF); //设置外部低速晶振,LSE晶振OFF    
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_5); //   RCC_PLLMul_ 设置PLL时钟频率为 5*8 MHz    
      
  RCC_PLLCmd(ENABLE); 
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//L就绪   
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);  
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  while(RCC_GetSYSCLKSource() != 0x08);
      
//  SystemInit();  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
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_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_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;  
    USART_ClockInit(USART1, &USART_ClockInitStructure);  
  USART_Init(USART1, &USART_InitStructure);  
  USART_Cmd(USART1, ENABLE);  
    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)  //18B20初始化   
{  
   u8 aa=0;  
   u8 count =0;  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能PC时钟   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//选择PC12  
  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(480);  
   count=0;  
    aa=Read_B20();  
    while(!aa && count<99)     
   {  
    aa=Read_B20();  
    count++;  
   }  
   if(count>=99) //大于99次 报错 为1    
        Error_Flag=1;  
    else  
        Error_Flag=0;   //未达99次 正常     
}  
    
unsigned char Read18B20(void)  
{    
unsigned char i=0;  
unsigned char date=0;  
u8 tempp;  
   for(i=8;i>0;i--) 
   {  
  
   Reset_B20(); 
   date>>=1;   
   delay_18b20(1);  
   Set_B20();  //拉高电平,关闭   
    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;      //date右移一位    
         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();//1820初始化    
    Write18B20(0xcc);        
    Write18B20(0x44);      
    Init18B20();//1820   
    Write18B20(0xcc);  
    Write18B20(0xbe);    
   
int main(void)  
{  
     int i;     unsigned char ID[8];  
  /*!< At this stage the microcontroller clock setting is already configured,  
       this is done through SystemInit() function which is called from startup 
       file (startup_stm32f10x_xx.s) before to branch to application main. 
       To reconfigure the default setting of SystemInit() function, refer to 
       system_stm32f10x.c file 
     */       
         
  /* System Clocks Configuration */  
  RCC_Configuration();  
USART_int(115200);  
    Init18B20();//初始化18B20  
    SysTick_Configuration();
      
    printf(" config done...\r\n");  
 Write18B20(0x33);   
     for(i=0;i<8;i++)   
    {    
        ID[i]=Read18B20();    
    }    
    delay_ms(1000);  
      
    while(1)  
    {  
        if(flag == 400){  
            printf("The Temperature is:%f\r\n",Read_T());//400us读一次温度   
}  
  if(flag == 300){         //300us读一次id    
              printf("The id is:");    
                for(i=0;i<8;i++)            
          {         
                printf("%u",ID[i]);        
                    if(i==7){printf("\r\n");    }    
        }     
      }    
}  
}  
#ifdef  USE_FULL_ASSERT  
  
/** 
  * @brief  Reports the name of the source file and the source line number 
  *         where the assert_param error has occurred. 
  * @param  file: pointer to the source file name 
  * @param  line: assert_param error line source number 
  * @retval None 
  */  
void assert_failed(uint8_t* file, uint32_t line)  
{   
  /* User can add his own implementation to report the file name and line number, 
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  
  /* Infinite loop */  
  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__ */    
/** 
  * @brief  Retargets the C library printf function to the USART. 
  * @param  None 
  * @retval None 
  */  
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  
  
/** 
  * @brief  Reports the name of the source file and the source line number 
  *         where the assert_param error has occurred. 
  * @param  file: pointer to the source file name 
  * @param  line: assert_param error line source number 
  * @retval None 
  */  
void assert_failed(uint8_t* file, uint32_t line)  
{   
  /* User can add his own implementation to report the file name and line number, 
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  
  /* Infinite loop */  
  while (1)  
  {  
  }  
}  
<p>  
    #endif  
</p>  
  
<p>  
    <br>  
  
</p>  
  
<p>  
    <br>  
  
</p>  

 


共12条 2/2 1 2 跳转至

回复

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