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

共6条 1/1 1 跳转至

01的作业。

菜鸟
2016-01-19 00:37:45     打赏


http://forum.eepw.com.cn/thread/279139/1
http://forum.eepw.com.cn/thread/279139/1/#1
http://forum.eepw.com.cn/thread/279139/1/#2
http://forum.eepw.com.cn/thread/279139/1/#3
http://forum.eepw.com.cn/thread/279139/1/#4
http://forum.eepw.com.cn/thread/279139/1/#5
http://forum.eepw.com.cn/thread/279139/1/#6







这是第一步,

接下来是这样的,

然后呢,这样咯,

然后,

第五步,

66666,

第七,

8,

最后一步啦~~~



菜鸟
2016-01-19 00:39:20     打赏
2楼

作业二:流水灯

/**
  ******************************************************************************
  * @file    GPIO/IOToggle/main.c 
  * @author  MCD Application Team
  * @version V3.5.0
  * @date    08-April-2011
  * @brief   Main program body.
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************
  */
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stm32_eval.h"
GPIO_InitTypeDef GPIO_InitStructure;
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);
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz
  RCC_PLLCmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  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);
 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);
}
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);
}
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{  
 int i;      
 unsigned int a[8]={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_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
 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);
while(1)
 {
  for(i=0;i<=7;i++)  
  {   
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);     
   delay_ms(50);        
GPIO_ResetBits(GPIOC,a[i]);      
delay_ms(50);   
GPIO_SetBits(GPIOC,a[i]);        
delay_ms(50);   
  }      
 
}
}


菜鸟
2016-01-19 00:43:44     打赏
3楼

0~99按键计数~~~~~要疯了~~~

  1.     /**    
  2.       * @brief  Main program.    
  3.       * @param  None    
  4.       * @retval None    
  5.       */      
  6.     #include "stm32f10x.h" //定义         
  7.     #include "stm32_eval.h"//定义         
  8.     #include    "stdio.h" //定义         
  9.     #include "math.h" //定义         
  10.     #define buff_size  16;//定义                
  11.     char rx_buff[], rx_buff_count=0; // rx_buff[]数祖,rx_buff_count  
  12.   
  13. 初始值等于0      
  14.              
  15.     GPIO_InitTypeDef  GPIO_InitStructure;//          
  16.     USART_InitTypeDef  USART_InitStructure;          
  17.     NVIC_InitTypeDef  NVIC_InitStructure;          
  18.     USART_ClockInitTypeDef  USART_ClockInitStructure;          
  19.              
  20.     void RCC_Configuration(void)          
  21.     {          
  22.         RCC_DeInit();          
  23.         RCC_HSICmd(ENABLE);          
  24.         while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);          
  25.         RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);          
  26.         RCC_HSEConfig(RCC_HSE_OFF);          
  27.         RCC_LSEConfig(RCC_LSE_OFF);          
  28.         RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz   
  29.   
  30.          
  31.         RCC_PLLCmd(ENABLE);          
  32.         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);          
  33.         RCC_ADCCLKConfig(RCC_PCLK2_Div4);          
  34.         RCC_PCLK2Config(RCC_HCLK_Div1);          
  35.         RCC_PCLK1Config(RCC_HCLK_Div2);          
  36.         RCC_HCLKConfig(RCC_SYSCLK_Div1);          
  37.         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);          
  38.         while(RCC_GetSYSCLKSource() != 0x08);          
  39.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|  
  40.   
  41. RCC_APB2Periph_AFIO, ENABLE);          
  42.         GPIO_PinRemapConfig  
  43.   
  44. (GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG          
  45.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;          
  46.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;          
  47.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          
  48.         GPIO_Init(GPIOD, &GPIO_InitStructure);          
  49.         GPIO_ResetBits(GPIOD,GPIO_Pin_2);//关闭蜂鸣器          
  50.     }          
  51.     void GPIO_INIT()          
  52.     {          
  53.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PC  
  54.   
  55. 时钟       
  56.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|  
  57.   
  58. GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|  
  59.   
  60. GPIO_Pin_14|GPIO_Pin_15;          
  61.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;          
  62.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出      
  63.   
  64.        
  65.         GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化PB       
  66.        GPIO_SetBits(GPIOB, GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|  
  67.   
  68. GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|  
  69.   
  70. GPIO_Pin_14|GPIO_Pin_15);       
  71.     }          
  72.              
  73.     void USART_int(long BaudRate)          
  74.     {   USART_InitTypeDef USART_InitStructure;            
  75.         USART_ClockInitTypeDef USART_ClockInitStructure;            
  76.          NVIC_InitTypeDef NVIC_InitStructure;         
  77.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|  
  78.   
  79. RCC_APB2Periph_USART1,ENABLE);//使能PA USART1          
  80.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//TX 位于PA9           
  81.        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;          
  82.        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出       
  83.   
  84.     
  85.        GPIO_Init(GPIOA, &GPIO_InitStructure);// TX初始化 PA9        
  86.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;// RX位于PA10          
  87.   
  88.    
  89.        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//悬空输  
  90.   
  91. 入        
  92.        GPIO_Init(GPIOA, &GPIO_InitStructure);//RX初始化 PA10           
  93.       /* USARTx configured as follow:      
  94.             - BaudRate = 115200 baud        
  95.             - Word Length = 8 Bits      
  96.             - One Stop Bit      
  97.             - No parity      
  98.             - Hardware flow control disabled (RTS and CTS signals)     
  99.  
  100.   
  101.             - Receive and transmit enabled      
  102.       */         
  103.         USART_InitStructure.USART_BaudRate = BaudRate;//传输速率        
  104.   
  105.      
  106.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//  
  107.   
  108. 字长8比特         
  109.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止  
  110.   
  111. 位1           
  112.         USART_InitStructure.USART_Parity = USART_Parity_No;//          
  113.         USART_InitStructure.USART_HardwareFlowControl =   
  114.   
  115. USART_HardwareFlowControl_None;        
  116.         USART_InitStructure.USART_Mode = USART_Mode_Rx |   
  117.   
  118. USART_Mode_Tx;// 接受和发送       
  119.         USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;     
  120.   
  121.             
  122.       USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;             
  123.   
  124.      
  125.       USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;           
  126.   
  127.        
  128.       USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;   
  129.   
  130.          
  131.         USART_ClockInit(USART1, &USART_ClockInitStructure);//初始化  
  132.   
  133. USART1时钟        
  134.         USART_Init(USART1, &USART_InitStructure);//初始化USART1时钟     
  135.   
  136.         
  137.         USART_Cmd(USART1, ENABLE);           
  138.         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);          
  139.         USART_Cmd(USART1, ENABLE);          
  140.       /* Configure four bit for preemption priority */         
  141.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);          
  142.       /* Enable the USART1 Interrupt */         
  143.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //选择  
  144.   
  145. USART1中断通道         
  146.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;      
  147.   
  148.       
  149.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;          
  150.         NVIC_Init(&NVIC_InitStructure);//初始化中断         
  151.     }          
  152.              
  153.     /*delay_us*/           
  154.                 
  155.     void delay_us(u32 n)             
  156.     {             
  157.         u8 j;             
  158.         while(n--)             
  159.         for(j=0;j<10;j++);             
  160.     }             
  161.     /*延时函数 微秒*/            
  162.     void  delay_ms(u32 n)             
  163.     {             
  164.        while(n--)             
  165.         delay_us(1000);             
  166.     }           
  167.     /*delay_ms*/          
  168.     void USART_SendStr(char *str)      //发送字符串函数         
  169.     {          
  170.        while((*str)!='\0')             //发送完直至最后            
  171.             {USART_SendData(USART1,*str++);          
  172.             while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) ==   
  173.   
  174. RESET);          
  175.             }           
  176.     unsigned int my_atoi(char* pstr) //字符串          
  177.     {             
  178.           int s = 0;            
  179.             while(*pstr != '\0')        //一直扫描到字符串          
  180.             {          
  181.                     if(*pstr >= '0' && *pstr <= '9')  //字符串中有数  
  182.   
  183. 字0-9          
  184.                     {            
  185.                             s = s * 10 + *pstr - '0';             
  186.                     }            
  187.                     pstr++;          
  188.             }                 
  189.         return s;           
  190.     }        
  191.                   
  192.      void Num(int i)          
  193.     {          
  194.           switch(i)//点亮对应输入的数字          
  195.         {          
  196.             case 0 : GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|  
  197.   
  198. GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);break;          
  199.             case 1 : GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
  200.   
  201.                                           break;          
  202.             case 2 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  203.   
  204. GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);            break;          
  205.             case 3 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  206.   
  207. GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);            break;          
  208.             case 4 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|  
  209.   
  210. GPIO_Pin_9|GPIO_Pin_12);                        break;          
  211.             case 5 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  212.   
  213. GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);            break;          
  214.             case 6 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  215.   
  216. GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);break;          
  217.             case 7 : GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|  
  218.   
  219. GPIO_Pin_12);                                   break;          
  220.             case 8 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  221.   
  222. GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);break;       
  223.   
  224.      
  225.             case 9 : GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|  
  226.   
  227. GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14); break;          
  228.             }        
  229.         }              
  230.         void func(char *S,char LEN)            
  231.     {        
  232.         int z;       
  233.        GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|  
  234.   
  235. GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);             
  236.                   
  237.         while(1)          
  238.         {                 
  239.            z=my_atoi(S);          
  240.                  
  241.             GPIO_SetBits(GPIOB,GPIO_Pin_1); //打开个位数码管          
  242.             Num(z%10);                      //点亮各位数           
  243.             delay_ms(5);                    //延时      
  244.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);//关闭个位数码管           
  245.   
  246.       
  247.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|  
  248.   
  249. GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);          
  250.                           
  251.             GPIO_SetBits(GPIOB,GPIO_Pin_15);//打开十位数码管          
  252.             Num(z/10);            
  253.             delay_ms(5);          
  254.             GPIO_ResetBits(GPIOB,GPIO_Pin_15);//关闭十位            
  255.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|  
  256.   
  257. GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);          
  258.                               
  259.             }        
  260.         }       
  261.         void input_ASK()            
  262.     {            
  263.         char j;            
  264.         func(rx_buff,rx_buff_count);            
  265.         rx_buff_count=0;            
  266.         for (j=0;j<rx_buff_count;j++)            
  267.         {rx_buff[j]='\0';}        
  268.        // USART_SendStr("\n>");            
  269.     }            
  270.           
  271.     int main()            
  272.     {                                     
  273.             RCC_Configuration();          
  274.           GPIO_INIT();           
  275.             USART_int(9600);          
  276.            // USART_SendStr("Please input like: data=\r\n");          
  277.             //USART_SendStr("\n>");          
  278.             while(1){          
  279.                     }          
  280.     }          
  281.              
  282.     void USART1_IRQHandler(void)  //声明接收中断函数     
  283.     {           
  284.       while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)    
  285.   
  286. //等待接收完毕       
  287.       {           
  288.       }           
  289.         if(USART_ReceiveData(USART1)==0x0d)     //如果接收到回车,结  
  290.   
  291. 束输入          
  292.         {input_ASK();}          //执行input_ASK()      
  293.         else         
  294.         {          
  295.         USART_SendData(USART1,USART_ReceiveData(USART1));      //将数  
  296.   
  297. 据回送至超级终端    
  298.         rx_buff[rx_buff_count]= USART_ReceiveData(USART1);


菜鸟
2016-01-19 00:45:54     打赏
4楼

,作业四:单号uart控制LED流水灯转速,

#include "stm32f10x.h"             
#include "stdio.h"   
  
GPIO_InitTypeDef GPIO_InitStructure;        
NVIC_InitTypeDef  NVIC_InitStructure;     
USART_InitTypeDef  USART_InitStructure;     
USART_ClockInitTypeDef  USART_ClockInitStructure;      
       
#define buff_size  16;         
char rx_buff[] ,rx_buff_count=0;    
    
void RCC_Configuration(void) ;   
void GPIO_INIT(void)  ;   
void USART_int(long BaudRate);   
void USART_SendStr(char *str);   
void  delay_ms(u32 n)  ;   
void delay_us(u32 n);    
  
 

int main()       
{                                
    RCC_Configuration();     
    GPIO_INIT();     
    USART_int(9600);     
    GPIO_ResetBits(GPIOC,0xffff);  
    delay_ms(200);     
    GPIO_SetBits(GPIOC,0xffff);   
    USART_SendStr("USART Led Speed\r\n");     
    USART_SendStr("\n>");     
    while(1);   
}      
    
 
void RCC_Configuration(void)      
{        
    ErrorStatus HSEStartUpStatus;     
    RCC_DeInit();                          
    RCC_HSEConfig(RCC_HSE_ON);  
  HSEStartUpStatus = RCC_WaitForHSEStartUp();     
  if(HSEStartUpStatus==SUCCESS)   
    {   
        RCC_HCLKConfig(RCC_SYSCLK_Div1);    
        RCC_PCLK1Config(RCC_HCLK_Div2); 
        RCC_PCLK2Config(RCC_HCLK_Div1);   
        RCC_PLLCmd(ENABLE);//*??PLL:             
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);   
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
        while(RCC_GetSYSCLKSource() != 0x08);     
    }   
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);   
       
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);           
    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);                 
}      
     
  
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 GPIO_INIT(void)      
{       
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         
    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);       
}     
  
  
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_10MHz;     
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;          
        GPIO_Init(GPIOA, &GPIO_InitStructure);     
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                                
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
  
        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);   
    
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;    
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
        NVIC_Init(&NVIC_InitStructure);     
                       
}     
  
  
void USART_SendStr(char *str)       
{     
            while((*str)!='\0')                
        {   
                    USART_SendData(USART1,*str++);     
                    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);    
        }     
}     
     
 
unsigned int translate(char* pstr)    
{      
      int s = 0;     
        while(*pstr != '\0')          
        {   
                if(*pstr >= '0' && *pstr <= '9')     
                {     
                        s = s * 10 + *pstr - '0';      
                }     
                pstr++;   
        }          
    return s;    
}    
  
 
void LED(char *S,char LEN)    
{    
          int m,i;   
        int a[8]={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3,GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_6,GPIO_Pin_7};    
            m=translate(S);   
       
            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);     
            delay_ms(100);             
            for(i=0;i<8;i++)    
            {   
                GPIO_ResetBits(GPIOC,a[i]);    
                delay_ms(m);   
                GPIO_SetBits(GPIOC,a[i]);     
                delay_ms(m);   
            }   
}   
  
  
void input_ASK()   
{     
    char j;     
    LED(rx_buff,rx_buff_count);   
    rx_buff_count=0;     
    for (j=0;j     {   
            rx_buff[j]='\0';   
        }     
    USART_SendStr("\n>");     
}    
  
  
 
void USART1_IRQHandler(void)      
{      
        while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)  { }    
    if(USART_ReceiveData(USART1)==0x0d)      
    {   
            input_ASK();   
        }     
    else     
    {     
            USART_SendData(USART1,USART_ReceiveData(USART1));   
            rx_buff[rx_buff_count]= USART_ReceiveData(USART1);     
      rx_buff_count++;     
    }     
           
        USART_ClearFlag(USART1, USART_FLAG_RXNE);   
}  



菜鸟
2016-01-19 00:47:29     打赏
5楼

作业五:定时器控制led跑马灯,

  1. #include "stm32f10x.h"  
  2. #include "stm32_eval.h"  
  3. #include <stdio.h>  
  4. /** @addtogroup STM32F10x_StdPeriph_Examples 
  5.   * @{ 
  6.   */  
  7.   
  8. /** @addtogroup EXTI_Config 
  9.   * @{ 
  10.   */   
  11.   
  12. /* Private typedef -----------------------------------------------------------*/  
  13. /* Private define ------------------------------------------------------------*/  
  14. /* Private macro -------------------------------------------------------------*/  
  15. /* Private variables ---------------------------------------------------------*/  
  16. EXTI_InitTypeDef   EXTI_InitStructure;  
  17. GPIO_InitTypeDef   GPIO_InitStructure;  
  18. NVIC_InitTypeDef   NVIC_InitStructure;  
  19. USART_InitTypeDef USART_InitStructure;  
  20. USART_ClockInitTypeDef USART_ClockInitStructure;  
  21. /* Private function prototypes -----------------------------------------------*/  
  22. void EXTIkeyS3_Config(void);  
  23. void EXTIkeyS4_Config(void);  
  24. void RCC_Configuration(void)  
  25. {  
  26.   RCC_DeInit();  
  27.       
  28.   RCC_HSICmd(ENABLE);  
  29.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);  
  30.     
  31.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);  
  32.     
  33.   RCC_HSEConfig(RCC_HSE_OFF);  
  34.   RCC_LSEConfig(RCC_LSE_OFF);  
  35.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz  
  36.   RCC_PLLCmd(ENABLE);  
  37.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  38.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);  
  39.   RCC_PCLK2Config(RCC_HCLK_Div1);  
  40.   RCC_PCLK1Config(RCC_HCLK_Div2);  
  41.   RCC_HCLKConfig(RCC_SYSCLK_Div1);  
  42.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
  43.   while(RCC_GetSYSCLKSource() != 0x08);  
  44. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  45.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  46. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  47.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  48.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  
  49.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  50.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  51.   GPIO_Init(GPIOD, &GPIO_InitStructure);  
  52. GPIO_ResetBits(GPIOD,GPIO_Pin_2);  
  53. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
  54.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  55.   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;  
  56.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  57.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  58.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  59. GPIO_ResetBits(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);  
  60. }  
  61.   
  62. void USART_int(long BaudRate)  
  63. {  
  64. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
  65.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
  66.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;  
  67.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
  68.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  69.     /* PA10 USART1_Rx  */  
  70.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  71.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  72.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  73.   /* USARTx configured as follow: 
  74.         - BaudRate = 115200 baud   
  75.         - Word Length = 8 Bits 
  76.         - One Stop Bit 
  77.         - No parity 
  78.         - Hardware flow control disabled (RTS and CTS signals) 
  79.         - Receive and transmit enabled 
  80.   */  
  81.   USART_InitStructure.USART_BaudRate = BaudRate;//??????  
  82.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???????8bit  
  83.   USART_InitStructure.USART_StopBits = USART_StopBits_1;//????1  
  84.   USART_InitStructure.USART_Parity = USART_Parity_No;//????  
  85.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//??????none  
  86.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//??????????  
  87. USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;       
  88.     USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;        
  89.     USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;        
  90.     USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;  
  91.     USART_ClockInit(USART1, &USART_ClockInitStructure);  
  92.   USART_Init(USART1, &USART_InitStructure);  
  93.   USART_Cmd(USART1, ENABLE);  
  94. USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  
  95.  USART_Cmd(USART1, ENABLE);  
  96.    
  97.   /* Configure four bit for preemption priority */  
  98.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);  
  99.   /* Enable the USART1 Interrupt */  
  100.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //  
  101.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;  
  102.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  103.   NVIC_Init(&NVIC_InitStructure);  
  104. }  
  105.   
  106. /* Private functions ---------------------------------------------------------*/  
  107.   
  108. /** 
  109.   * @brief  Main program. 
  110.   * @param  None 
  111.   * @retval None 
  112.   */  
  113. int main(void)  
  114. {RCC_Configuration();  
  115.     
  116.   /* Configure PA.00 in interrupt mode */  
  117.   EXTIkeyS3_Config();  
  118.   
  119.   /* Configure PB.09 or PG.08 in interrupt mode */  
  120.   EXTIkeyS4_Config();  
  121. USART_int(115200);  
  122. printf("Config done,waiting for interrupt......\r\n");  
  123.             
  124.   while (1)  
  125.   {  
  126.   }  
  127. }  
  128.   
  129. /** 
  130.   * @brief  Configure PA.00 in interrupt mode 
  131.   * @param  None 
  132.   * @retval None 
  133.   */  
  134. void EXTIkeyS3_Config(void)  
  135. {  
  136.   /* Enable GPIOA clock */  
  137.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
  138.     
  139.   /* Configure PA.00 pin as input floating */  
  140.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  141.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  142.   GPIO_Init(GPIOA, &GPIO_InitStructure);  
  143.   
  144.   /* Enable AFIO clock */  
  145.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  146.   
  147.   /* Connect EXTI0 Line to PA.00 pin */  
  148.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);  
  149.   
  150.   /* Configure EXTI0 line */  
  151.   EXTI_InitStructure.EXTI_Line = EXTI_Line10;  
  152.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  153.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  154.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  155.   EXTI_Init(&EXTI_InitStructure);  
  156.   
  157.   /* Enable and set EXTI0 Interrupt to the lowest priority */  
  158.   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
  159.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  160.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  161.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  162.   NVIC_Init(&NVIC_InitStructure);  
  163. }  
  164.   
  165. /** 
  166.   * @brief  Configure PB.09 or PG.08 in interrupt mode 
  167.   * @param  None 
  168.   * @retval None 
  169.   */  
  170. void EXTIkeyS4_Config(void)  
  171. {  
  172.   /* Enable GPIOB clock */  
  173.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
  174.   
  175.   /* Configure PB.09 pin as input floating */  
  176.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;  
  177.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  178.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  179.   
  180.   /* Enable AFIO clock */  
  181.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  182.   /* Connect EXTI9 Line to PB.09 pin */  
  183.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11);  
  184.   
  185.   /* Configure EXTI9 line */  
  186.   EXTI_InitStructure.EXTI_Line = EXTI_Line11;  
  187.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  188.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
  189.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  190.   EXTI_Init(&EXTI_InitStructure);  
  191.   
  192.   /* Enable and set EXTI9_5 Interrupt to the lowest priority */  
  193.   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
  194.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  195.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  196.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  197.   
  198.   NVIC_Init(&NVIC_InitStructure);  
  199. }  
  200.   
  201. /******************************************************************************/  
  202. /*            STM32F10x Peripherals Interrupt Handlers                        */  
  203. /******************************************************************************/  
  204.   
  205. /** 
  206.   * @brief  This function handles External lines 9 to 5 interrupt request. 
  207.   * @param  None 
  208.   * @retval None 
  209.   */  
  210. void EXTI15_10_IRQHandler(void)  
  211. {  
  212.   if(EXTI_GetITStatus(EXTI_Line10) != RESET)  
  213.   {  
  214.     /* Toggle LED2 */  
  215.      GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
  216. printf("S4 interrupt ......\r\n");  
  217.     /* Clear the  EXTI line 9 pending bit */  
  218.     EXTI_ClearITPendingBit(EXTI_Line10);  
  219.   }  
  220. if(EXTI_GetITStatus(EXTI_Line11) != RESET)  
  221.   {  
  222.     /* Toggle LED1 */  
  223.      GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);  
  224. printf("S3 interrupt ......\r\n");  
  225.     /* Clear the  EXTI line 0 pending bit */  
  226.     EXTI_ClearITPendingBit(EXTI_Line11);  
  227.   }  
  228. }  
  229.   
  230.   
  231. #ifdef  USE_FULL_ASSERT  
  232.   
  233. /** 
  234.   * @brief  Reports the name of the source file and the source line number 
  235.   *         where the assert_param error has occurred. 
  236.   * @param  file: pointer to the source file name 
  237.   * @param  line: assert_param error line source number 
  238.   * @retval None 
  239.   */  
  240. void assert_failed(uint8_t* file, uint32_t line)  
  241. {   
  242.   /* User can add his own implementation to report the file name and line number, 
  243.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  244.   
  245.   /* Infinite loop */  
  246.   while (1)  
  247.   {  
  248.   }  
  249. }  
  250.   
  251. #endif  
  252.   
  253. /** 
  254.   * @} 
  255.   */   
  256.   
  257. /** 
  258.   * @} 
  259.   */   
  260.   
  261. #ifdef __GNUC__  
  262.   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
  263.      set to 'Yes') calls __io_putchar() */  
  264.   #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
  265. #else  
  266.   #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
  267. #endif /* __GNUC__ */  
  268.     
  269.   
  270.   
  271. /** 
  272.   * @brief  Retargets the C library printf function to the USART. 
  273.   * @param  None 
  274.   * @retval None 
  275.   */  
  276. PUTCHAR_PROTOTYPE  
  277. {  
  278.   /* Place your implementation of fputc here */  
  279.   /* e.g. write a character to the USART */  
  280.   USART_SendData(EVAL_COM1, (uint8_t) ch);  
  281.   
  282.   /* Loop until the end of transmission */  
  283.   while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
  284.   {}  
  285.   
  286.   return ch;  
  287. }  
  288.   
  289. #ifdef  USE_FULL_ASSERT  
  290.   
  291. /** 
  292.   * @brief  Reports the name of the source file and the source line number 
  293.   *         where the assert_param error has occurred. 
  294.   * @param  file: pointer to the source file name 
  295.   * @param  line: assert_param error line source number 
  296.   * @retval None 
  297.   */  
  298. void assert_failed(uint8_t* file, uint32_t line)  
  299. {   
  300.   /* User can add his own implementation to report the file name and line number, 
  301.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  302.   
  303.   /* Infinite loop */  
  304.   while (1)  
  305.   {  
  306.   }  
  307. }  
  308.   
  309. #endif  


菜鸟
2016-01-19 00:49:05     打赏
6楼

作业六 计算开机次数,

sfr IAP_DATA     = 0xE2;
sfr IAP_ADDRH     = 0xE3;
sfr IAP_ADDRL     = 0xE4;
sfr IAP_CMD      = 0xE5;
sfr IAP_TRIG     = 0xE6;
sfr IAP_CONTR     = 0xE7;
#define           CMD_IDLE  0
#define           CMD_READ   1
#define           CMD_PROGRAM   2
#define           CMD_ERASE   3 
#define     ENABLE_IAP0x80 
#define     ENABLE_IAP0x81 
#define     ENABLE_IAP0x82
#define     ENABLE_IAP0x83 
IAP_ADDRESS    0x2000    //STC90C52ϵÁÐEEPROM²âÊÔÆðʼµØÖ·
void IapIdle(void)
{
IAP_CONTR=0;
IAP_CMD =0;
IAP_TRIG =0;
IAP_ADDRH=0x80;
IAP_ADDRL =0;
}

unsigned char IapReadByte(unsigned int addt) 
{
unsigned char dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD =CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRL=addr>>8
IAP_TRIG =0x46;
IAP_TRIG =0xb9;
dat = IAP_DATA;
IapIdle();

return dat;
}
void Iap ProgramByte(unsigned int addr,unsigned char dat )
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD =CMD_REOGRAM;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8
IAP_DATA=date;
IAP_TRIG =0x46;
IAP_TRIG =0xb9;
IapIdle();
}
void Iap EraseSector(unsigned int addr )
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD =CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8
IAP_TRIG =0x46;
IAP_TRIG =0xb9;
IapIdle();
}
unsigned char Num=0;
void main(void)
{
unsigned long i=0;
Num = Iap ReadByte(IAP_ADDRESS+20);
Num++;
Iap EraseSector(IAP_ADDRESS);
Iap ProgramByte(IAP_ADDRESS+20,Num);
for(i=0;i
{
LED0=0;
DelayMs(100);
LED0=1;
DelayMs(100);
}
while(1);
}


共6条 1/1 1 跳转至

回复

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