找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2498|回复: 0
收起左侧

霍尔传感器接下位机版纵撕代码 STM32三串口通信加网络通信代码

[复制链接]
ID:224255 发表于 2017-8-3 09:03 | 显示全部楼层 |阅读模式
STM32三串口通信加网络通信代码
0.png

霍尔传感器接下位机版纵撕代码单片机源程序如下:
  1. #include <stm32f10x.h>
  2. #include <string.h>
  3. #include "includes.h"
  4. #include "timer.h"
  5. #include <stdio.h>

  6. u8 volatile  rcv_usart1_str_flag   = 0;                //串口数据接收启动标记
  7. u8 volatile  rcv_usart1_end_flag   = 0;                //串口数据接收结束标记                                    
  8. u8 volatile  rcv_usart1_over_count = 0;                //数据接收时间溢出标记
  9. u8  inRx1Buf[50];                                                        //接收缓存
  10. u16 inRx1Length = 0;                                                  //接收字节长度
  11. u16 PD_Length=0;
  12. extern u8 kt_flag;
  13. u8 SD_flag=0;
  14. u8 zero_data[4]={0x87,0xff,0xff,0x0a};
  15. unsigned char txt_buf[8]= {0xA5,0x5A,0x05,0x82,0x00,0x02,0x00,0x00};
  16. unsigned char on_off_data[3]={0x88,0x00,0x0a};
  17. unsigned char ceshi_data[3]={0x00,0x00,0x00};

  18. //========
  19. char test[UART1BUF_LEN];
  20. //-=======

  21. u8 uart1RxBuf[UART1BUF_LEN];
  22. u8 uart1RxStart = 0;
  23. u8 uart1RxEnd = 0;

  24. u8 uart2RxBuf[UART2BUF_LEN];
  25. u8 uart2RxStart = 0;
  26. u8 uart2RxEnd = 0;


  27. u8 uart3RxBuf[UART1BUF_LEN];
  28. u8 uart3RxStart = 0;
  29. u8 uart3RxEnd = 0;

  30. void LED_ON(void);
  31. void LED_OFF(void);
  32. void InitLedIO(void);
  33. void USART1_Init(void);
  34. int WriteString(u8 *text, FIL *file);

  35. extern u8 bootup_adjust;
  36. extern u8 bootup_font_update;

  37. #if ICO_TO_SD==0
  38. extern u8 bootup_ico_update;
  39. #endif
  40. u8 wlSendBuf[32];

  41. int res = -1;
  42. u8 rt_flag=0;
  43. UINT byte_read = 0;  
  44. int volatile isFileOpen = -1;
  45. //unsigned char *txt_buf0;
  46. int readok=0;

  47. void NVIC_Configuration(void)
  48. {
  49.         NVIC_InitTypeDef NVIC_InitStructure;
  50.         GPIO_InitTypeDef GPIO_InitStructure;
  51.         EXTI_InitTypeDef EXTI_InitStructure;

  52.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  53.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  54.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  55.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  56.         
  57.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;               
  58.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  59.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  60.     GPIO_Init(GPIOA, &GPIO_InitStructure);
  61.         
  62.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;               
  63.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  64.     //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  65.     GPIO_Init(GPIOA, &GPIO_InitStructure);        
  66.         
  67.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;        
  68.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;      
  69.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  70.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  71.           GPIO_ResetBits(GPIOB, GPIO_Pin_1);
  72.                
  73.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;        
  74.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  75.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  76.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  77.         GPIO_ResetBits(GPIOB, GPIO_Pin_6);
  78.         
  79.                         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;        
  80.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  81.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  82.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  83.           GPIO_ResetBits(GPIOB, GPIO_Pin_7);
  84.         
  85.         
  86.         //GPIOA.0          中断线以及中断初始化配置 上升沿触发 PA0  WK_UP
  87.            GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);

  88.            EXTI_InitStructure.EXTI_Line=EXTI_Line0;
  89.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        
  90.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  91.                 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  92.           EXTI_Init(&EXTI_InitStructure);                //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

  93.          
  94.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  95.                
  96.                 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                        //使能按键WK_UP所在的外部中断通道
  97.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //抢占优先级2,
  98.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                                        //子优先级3
  99.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
  100.           NVIC_Init(&NVIC_InitStructure);

  101.           NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  102.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  103.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  104.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  105.     NVIC_Init(&NVIC_InitStructure);
  106.         
  107.                 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  108.                 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
  109.                 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;               
  110.                 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;               
  111.                 NVIC_Init(&NVIC_InitStructure);                                       
  112.         
  113.           NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  114.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  115.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  116.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  117.     NVIC_Init(&NVIC_InitStructure);
  118.                
  119.                         NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  120.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  121.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
  122.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  123.     NVIC_Init(&NVIC_InitStructure);
  124.                
  125.                         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;        
  126.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  127.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  128.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  129.           //GPIO_SetBits(GPIOB, GPIO_Pin_5);
  130.                 GPIO_ResetBits(GPIOB, GPIO_Pin_5);
  131. }

  132. void App_Init(void)
  133. {                                          
  134.         delay_init(72);
  135.         NVIC_Configuration();
  136.         USART_Configuration();
  137.         delay_ms(1500);
  138.         Timer_Configuration();
  139.         InitLedIO();
  140. }


  141. void reflus()
  142. {
  143.         int i;
  144.         for(i=0;i<60;i++)
  145.                 {
  146.                          test[i]=0;
  147.                          uart1RxEnd=0;
  148.                 }
  149. }
  150. int main(void)
  151. {        
  152.         int i;

  153.         u8 s[20];
  154.         SystemInit();
  155.         App_Init();        
  156.         delay_ms(10);        
  157.         PD_Length=0;        
  158.         USART1_Put_Data(ceshi_data,3);
  159.   USART3_Put_Data(ceshi_data,3);
  160.   txt_buf[6]=PD_Length>>8;        
  161.   txt_buf[7]=PD_Length&0x00ff;               
  162.   //USART1_Put_Data(txt_buf,8);               
  163. //        GPIO_SetBits(GPIOB, GPIO_Pin_6);         
  164. //        GPIO_SetBits(GPIOB, GPIO_Pin_7);         
  165.                 USART1_Put_Data(zero_data,4);
  166.         USART3_Put_Data(zero_data,4);
  167.         delay_ms(1000);        
  168.         if(kt_flag==1)
  169.         {
  170.                 SD_flag=0;
  171.     on_off_data[1]=0x06;
  172.           GPIO_ResetBits(GPIOB, GPIO_Pin_1);
  173.           USART1_Put_Data(on_off_data,3);
  174.                 USART3_Put_Data(on_off_data,3);
  175.         }
  176.         else
  177.         {
  178.                   SD_flag=1;
  179.       on_off_data[1]=0x05;
  180.             GPIO_SetBits(GPIOB, GPIO_Pin_1);           
  181.             USART1_Put_Data(on_off_data,3);
  182.                   USART3_Put_Data(on_off_data,3);
  183.         }
  184.         while(1)
  185.         {
  186.    if(kt_flag==1&&SD_flag==1)
  187.    {
  188.     delay_ms(1500);
  189.     if(kt_flag==1)
  190.           {
  191.     SD_flag=0;
  192.     on_off_data[1]=0x06;
  193.           GPIO_ResetBits(GPIOB, GPIO_Pin_1);
  194.           USART1_Put_Data(on_off_data,3);
  195.                 USART3_Put_Data(on_off_data,3);
  196.     }
  197.    }
  198.                 uart1RxEnd=0;
  199.           uart3RxEnd=0;
  200.         
  201.         }
  202. }

  203. ……………………

  204. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
霍尔传感器接下位机版纵撕.7z (841.73 KB, 下载次数: 18)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表