久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3213|回復(fù): 1
收起左側(cè)

STM32多路模擬輸入數(shù)字輸入源代碼

[復(fù)制鏈接]
ID:328250 發(fā)表于 2018-9-21 22:59 | 顯示全部樓層 |閱讀模式
STM32多路模擬輸入,數(shù)字輸出代碼

單片機(jī)源程序如下:
  1. #include "main.h"
  2. #include "usart.h"
  3. #include "delay.h"
  4. #include "hw_config.h"
  5. #include "flash.h"
  6. #include "stm32f10x_conf.h"
  7. #include "esp8266.h"
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include "adc.h"
  11. #include "flash.h"

  12. #define RS232_version
  13. //#define yunnan_version
  14. #define RS485_version


  15. #define key_lenght 512

  16. #define LED2_L GPIO_SetBits(GPIOA, GPIO_Pin_15)
  17. #define LED2_H GPIO_ResetBits(GPIOA, GPIO_Pin_15)
  18. #define LED1_L GPIO_SetBits(GPIOB, GPIO_Pin_3)
  19. #define LED1_H GPIO_ResetBits(GPIOB, GPIO_Pin_3)

  20. #define RS485_H GPIO_SetBits(GPIOA, GPIO_Pin_12)
  21. #define RS485_L GPIO_ResetBits(GPIOA, GPIO_Pin_12)

  22. /*-----------------------------------------------------------------------------*/
  23. u32 TimeTick=0;
  24. u16 Runtime=0;
  25. //u8 Time_100msFlg=0;
  26. //u8 Time_500msFlg=0;
  27. //u8 Time_1000msFlg=0;
  28. u8 SendDataFlg=0;
  29. u8 CurrentIn = 255;
  30. u8 PreviousIn = 255;
  31. u8 ConnectCounter=0;
  32. u8 BoardSate[4]={0,0,0,10};
  33. u16 ADC_Maxbuf[8]={0};

  34. //_BoardStatus BoardStatus;
  35. u16 Encrypt_index=0;
  36. u8 encrypt_indexbuf[2];

  37. const unsigned char key[key_lenght]={
  38.         220,96,251,121,225,130,202,49,163,169,217,146,102,164,27,95,
  39.         192,170,88,83,115,172,175,109,86,24,145,224,238,130,88,78,
  40.         216,88,57,212,7,200,109,66,145,193,151,71,235,87,9,55,
  41.         133,133,84,108,56,112,17,47,176,142,35,200,240,232,65,32,
  42.         81,139,185,13,106,70,88,247,61,21,193,176,20,103,128,254,
  43.         14,89,90,104,46,234,22,103,71,10,35,119,165,163,81,167,
  44.         127,119,244,96,157,250,204,63,45,92,46,34,173,95,26,72,
  45.         14,35,186,151,141,216,240,101,117,81,197,96,34,223,81,153,
  46.         195,25,49,156,113,32,96,18,140,27,59,209,188,242,185,230,
  47.         238,218,105,129,232,185,26,165,133,143,234,76,53,107,29,77,
  48.         10,147,94,147,45,125,213,237,194,167,10,114,157,31,168,129,
  49.         150,221,112,70,117,207,176,9,254,138,23,225,52,20,220,32,
  50.         252,237,199,40,147,37,185,113,4,123,190,64,174,167,8,101,
  51.         229,104,180,86,250,213,214,58,225,85,148,162,101,242,184,173,
  52.         201,233,116,175,87,128,237,113,36,254,65,249,17,111,89,87,
  53.         130,176,251,203,94,134,36,38,22,140,69,62,143,22,11,17,
  54.         194,16,118,195,50,88,14,101,122,67,50,251,147,219,41,113,
  55.         250,61,32,180,246,235,78,67,196,77,152,201,58,174,224,13,
  56.         242,48,55,0,248,149,37,41,161,150,81,27,84,40,146,58,
  57.         99,210,67,82,245,85,25,213,192,51,253,227,190,68,42,202,
  58.         97,36,8,98,164,40,120,101,23,245,18,95,154,50,238,156,
  59.         186,94,101,103,107,141,22,156,22,96,62,197,150,64,106,93,
  60.         108,133,185,47,32,47,148,59,89,220,58,0,67,185,59,141,
  61.         67,97,40,96,221,193,95,210,13,106,75,67,232,178,205,214,
  62.         139,180,242,20,120,190,123,139,200,42,13,141,82,22,89,92,
  63.         37,175,129,52,24,9,127,169,38,229,33,180,226,81,81,166,
  64.         15,99,116,141,197,38,21,131,228,155,151,178,180,208,128,246,
  65.         17,238,30,56,48,152,189,129,52,73,237,146,156,198,168,119,
  66.         216,101,126,237,160,202,150,254,154,252,79,123,113,204,243,84,
  67.         101,42,163,243,50,24,118,117,164,241,89,123,55,130,230,30,
  68.         241,32,216,79,82,145,86,69,87,31,157,50,73,66,16,103,
  69.         84,153,45,114,35,180,68,192,237,9,72,173,113,26,198,24
  70. };
  71. u8 encrypt_piont(u8 piont,u16 index)
  72. {
  73.         u8 tmp;
  74.         tmp = key[index % key_lenght] ^ piont;
  75.         return tmp;
  76. }

  77. void encrypt_index(u16 index, u8* Index_bytes)
  78. {
  79.         unsigned char data_H, tmp1, tmp2, tmp3;
  80.         unsigned char data_L;
  81.                 //counter++;
  82.         data_H = index>>8;
  83.         data_L = index & 0xff;

  84.         tmp1 = data_H & 0xaa;
  85.         tmp2 = data_H & 0x55;
  86.         tmp1 = tmp1 >> 1;
  87.         tmp2 = tmp2 << 1;
  88.         data_H = tmp1 | tmp2;

  89.         tmp1 = data_H & 0x01;
  90.         tmp2 = data_H & 0x80;
  91.         tmp3 = data_H & 0x7E;
  92.         tmp1 = tmp1 << 7;
  93.         tmp2 = tmp2 >> 7;
  94.         //data_H = tmp1 | tmp2 | tmp3;
  95.         Index_bytes[0]= tmp1 | tmp2 | tmp3;

  96.         tmp1 = data_L & 0xaa;
  97.         tmp2 = data_L & 0x55;
  98.         tmp1 = tmp1 >> 1;
  99.         tmp2 = tmp2 << 1;
  100.         data_L = tmp1 | tmp2;

  101.         tmp1 = data_L & 0x01;
  102.         tmp2 = data_L & 0x80;
  103.         tmp3 = data_L & 0x7E;
  104.         tmp1 = tmp1 << 7;
  105.         tmp2 = tmp2 >> 7;
  106.         //data_L = tmp1 | tmp2 | tmp3;
  107.         Index_bytes[1]= tmp1 | tmp2 | tmp3;

  108.         //int tmp4 = data_H * 256 + data_L;
  109.        
  110. }


  111. void RemapGPIO_AndRCCini(void)
  112. {
  113.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO,ENABLE ); //使能 ADC1 通道時(shí)鐘,各個管腳時(shí)鐘
  114.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//JTAG-DP 禁用+ SW-DP 使能       
  115.         RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72M/6=12,ADC 最大時(shí)間不能超過 14M
  116.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能 DMA 傳輸,ADC中用到
  117. }
  118. /*
  119. data: 0000 1111B 低四位代表四路激光的開關(guān)
  120. GPIO PB5 PB6 PB7 PB8
  121. 0000 0001 1110 0000B
  122. */
  123. void WriteLaser(u8 data)
  124. {
  125.         unsigned short temp;
  126.         temp=(data&0x000f)<<5;
  127.         GPIOB->BSRR = temp&0x1e0;
  128.         GPIOB->BRR = ~temp&0x1e0;
  129. }
  130. void GPIO_Configuration(void)
  131. {
  132.         GPIO_InitTypeDef GPIO_InitStruct;
  133.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);

  134.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//in10-16
  135.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;//Digital input
  136.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  137.         GPIO_Init(GPIOB, &GPIO_InitStruct);
  138.        
  139.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  140.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_11;////Digital input
  141.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  142.         GPIO_Init(GPIOA, &GPIO_InitStruct);

  143.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  144.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;//LED,Laser
  145.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  146.         GPIO_Init(GPIOB, &GPIO_InitStruct);

  147.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  148.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_12;//LED RS485DIR
  149.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  150.         GPIO_Init(GPIOA, &GPIO_InitStruct);
  151.         GPIO_ResetBits(GPIOA, GPIO_Pin_15);       
  152.         GPIO_ResetBits(GPIOB, GPIO_Pin_3);

  153.        
  154. }

  155. u8 ReadInput (void)
  156. {
  157.         u8 tmp=0;
  158.         u16 GPIOin;
  159.         GPIOin=GPIO_ReadInputData(GPIOB);//0 1 12 13 14 15
  160.         tmp|=(u8)((GPIOin>>10)&0x3c);
  161.         tmp|=(u8)(GPIOin&0x03);
  162.         GPIOin=GPIO_ReadInputData(GPIOA);//8 11
  163.         tmp|=(u8)((GPIOin>>2)&0x40);
  164.         tmp|=(u8)((GPIOin>>4)&0x80);
  165.         return tmp;
  166. }
  167. //ESP8266使用
  168. void TIM3_Init(u16 arr,u16 psc)
  169. {
  170.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  171.         NVIC_InitTypeDef NVIC_InitStructure;
  172.        
  173.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);           //使能TIM3時(shí)鐘       
  174.     TIM_TimeBaseInitStructure.TIM_Period = arr-1;                       //自動重裝載值
  175.         TIM_TimeBaseInitStructure.TIM_Prescaler=psc-1;                //定時(shí)器分頻
  176.         TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計(jì)數(shù)模式
  177.         TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;     //1分頻
  178.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);            //按配置設(shè)置TIM3
  179.        
  180.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);                      //允許定時(shí)器3更新中斷
  181.         TIM_Cmd(TIM3,DISABLE);                                         //使能定時(shí)器3
  182.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;                 //定時(shí)器3中斷
  183.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;    //搶占優(yōu)先級1
  184.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;           //子優(yōu)先級3
  185.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                 //使能中斷
  186.         NVIC_Init(&NVIC_InitStructure);                               //按配置設(shè)置
  187. }

  188. //IO查詢使用
  189. void Timer_Config(void)//5ms中斷
  190. {
  191.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;                                 //定義TIM結(jié)構(gòu)體變量
  192.         NVIC_InitTypeDef NVIC_InitStructure;
  193.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);                 //使能TIM2外設(shè)
  194.         TIM_DeInit(TIM2);                                                  //復(fù)位時(shí)鐘TIM2,恢復(fù)到初始狀態(tài)
  195.         TIM_TimeBaseStructure.TIM_Period=3599;                                                 //35999和1999剛好1s,4499為1/8S
  196.         TIM_TimeBaseStructure.TIM_Prescaler=99;                                                        
  197.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                  //TIM2時(shí)鐘分頻
  198.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;          //計(jì)數(shù)方式
  199.         //  定時(shí)時(shí)間T計(jì)算公式:                                                                                 
  200.         //  T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=(35999+1)*(1999+1)/72MHz=1s
  201.         TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);                                   //初始化
  202.         TIM_ClearFlag(TIM2,TIM_FLAG_Update);                                                     //清除標(biāo)志       
  203.         //  中斷方式下,使能中斷源
  204.         TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);                     //使能中斷源       
  205.         //TIM_Cmd(TIM2,ENABLE);                 //放MIAN里面                                                                 //使能TIM2
  206.         //  設(shè)置優(yōu)先分級組                                                                                                                                  
  207.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);            //0組,全副優(yōu)先級                 
  208.         NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;             //選擇中斷通道,庫P166頁,
  209.         //  選擇中斷通道。注意:固件庫中為XXX_IRQChannel,但該程序預(yù)定義為XXX_IRQn,所以要特別注意         
  210.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;    //搶占優(yōu)先級0
  211.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;           //響應(yīng)優(yōu)先級0
  212.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;              //啟動此通道的中斷
  213.         NVIC_Init(&NVIC_InitStructure);
  214. }

  215. void Delay_Ms(unsigned int time)
  216. {
  217.         unsigned int i,j;
  218.         for(i=0;i<time;i++)
  219.                   for(j=0;j<10260;j++);
  220. }
  221. void IntToChar(u16 data,u8 *buf)
  222. {
  223.         buf[0]=data/10000;
  224.         buf[1]=data/1000%10;
  225.         buf[2]=data/100%10;
  226.         buf[3]=data/10%10;
  227.         buf[4]=data%10;
  228. }
  229. void ADCprocess(void)
  230. {
  231.         u8 i;
  232.         Average_Cal();
  233.         for(i=0;i<8;i++)
  234.         {
  235.                 if(ADC_Maxbuf[i]<After_Average[i])
  236.                         ADC_Maxbuf[i]=After_Average[i];
  237.         }
  238. }

  239. int main(void)
  240. {
  241.         Delay_Ms(200);
  242.         RemapGPIO_AndRCCini();
  243.         Delay_Init(72);//用定時(shí)器延時(shí)
  244.         GPIO_Configuration();//LED,ADC
  245.         RS485_H;
  246.         LED2_L;
  247.         usart3_init(115200);
  248.         usart1_init(9600);
  249.         Timer_Config();
  250.         Delay_Ms(2000);
  251.         TIM_Cmd(TIM2,ENABLE);
  252.         LED2_H;
  253.         while(1)
  254.         {
  255.                 Delay_Ms(200);
  256.         }
  257. }
  258. /*-------------------------------------------------*/
  259. /*函數(shù)名:定時(shí)器3中斷服務(wù)函數(shù)                      */
  260. /*參  數(shù):無                                       */
  261. /*返回值:無                                       */
  262. /*-------------------------------------------------*/
  263. void TIM3_IRQHandler(void)
  264. {
  265.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發(fā)生與否
  266.         {
  267.                 TIM_Cmd(TIM3, DISABLE);                         //關(guān)閉TIM3
  268.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);     //清除TIMx更新中斷標(biāo)志
  269.         }
  270. }


  271. void TIM2_IRQHandler(void)        //5ms
  272. {
  273.         u8 Piont=0,ReadInputbuf;
  274.         u8        EdgeSignal_up;
  275.         u8        EdgeSignal_down;
  276.         if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET)
  277.            {       
  278.                    ReadInputbuf=ReadInput();
  279.                 PreviousIn = CurrentIn;
  280.                 CurrentIn = ReadInputbuf;
  281.                 EdgeSignal_down=(~CurrentIn) & PreviousIn;
  282.                 EdgeSignal_up=CurrentIn & (~PreviousIn);
  283.                 if(EdgeSignal_down)
  284.                 {
  285.                         switch(EdgeSignal_down)
  286.                         {
  287.                                 case 0x01:
  288.                                         Piont=1;
  289.                                         LED1_H;
  290.                                         break;
  291.                                 case 0x02:
  292.                                         Piont=2;
  293.                                         LED1_H;
  294.                                         break;
  295.                                 case 0x03:
  296.                                         Piont=03;
  297.                                         break;
  298.                                 case 0x08:
  299.                                         Piont=4;
  300.                                         LED1_H;
  301.                                         break;
  302.                                 case 0x10:
  303.                                         Piont=5;
  304.                                         LED1_H;
  305.                                         break;
  306.                                 case 0x20:
  307.                                         Piont=6;
  308.                                         LED1_H;
  309.                                         break;
  310.                                 case 0x40:
  311.                                         Piont=7;
  312.                                         LED1_H;
  313.                                         break;
  314.                                 case 0x80:
  315.                                         Piont=8;
  316.                                         LED1_H;
  317.                                         break;
  318.                         }
  319.                         WriteLaser(15);
  320.                 }
  321.                 else if(EdgeSignal_up)
  322.                 {
  323.                         switch(EdgeSignal_up)
  324.                         {
  325.                                 case 0x01:
  326.                                         Piont=11;
  327.                                         LED1_L;
  328.                                         break;
  329.                                 case 0x02:
  330.                                         Piont=12;
  331.                                         LED1_L;
  332.                                         break;
  333.                                 case 0x03:
  334.                                         Piont=13;
  335.                                         break;
  336.                                 case 0x08:
  337.                                         Piont=14;
  338.                                         LED1_L;
  339.                                         break;
  340.                                 case 0x10:
  341.                                         Piont=15;
  342.                                         LED1_L;
  343.                                         break;
  344.                                 case 0x20:
  345.                                         Piont=16;
  346.                                         LED1_L;
  347.                                         break;
  348.                                 case 0x40:
  349.                                         Piont=17;
  350.                                         LED1_L;
  351.                                         break;
  352.                                 case 0x80:
  353.                                         Piont=18;
  354.                                         LED1_L;
  355.                                         break;
  356.                         }
  357.                         WriteLaser(0);
  358.                 }
  359.                 if(Piont)
  360.                 {
  361. #ifdef yunnan_version
  362.                         if(Piont==1||Piont==2)
  363.                         {
  364.                                 while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  365.                                 USART_SendData(USART3,0x31);
  366.                                 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  367.                                 USART_SendData(USART1,0x31);
  368.                         }
  369. #endif

  370. #ifdef RS485_version
  371.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  372.                         USART_SendData(USART1,0xff);
  373.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  374.                         USART_SendData(USART1,0xfe);
  375.                         Encrypt_index++;
  376.                         Piont = encrypt_piont(Piont,Encrypt_index);
  377.                         encrypt_index(Encrypt_index,encrypt_indexbuf);
  378.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  379.                         USART_SendData(USART1,encrypt_indexbuf[0]);
  380.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  381.                         USART_SendData(USART1,Piont);
  382.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  383.                         USART_SendData(USART1,encrypt_indexbuf[1]);
  384.                         Piont=Piont+encrypt_indexbuf[0]+encrypt_indexbuf[1];
  385.                         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  386.                         USART_SendData(USART1,Piont);
  387. #endif
  388. #ifdef RS232_version
  389.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  390.                         USART_SendData(USART3,0xff);
  391.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  392.                         USART_SendData(USART3,0xfe);
  393.                         Encrypt_index++;
  394.                         Piont = encrypt_piont(Piont,Encrypt_index);
  395.                         encrypt_index(Encrypt_index,encrypt_indexbuf);
  396.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  397.                         USART_SendData(USART3,encrypt_indexbuf[0]);
  398.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  399.                         USART_SendData(USART3,Piont);
  400.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  401.                         USART_SendData(USART3,encrypt_indexbuf[1]);
  402.                         Piont=Piont+encrypt_indexbuf[0]+encrypt_indexbuf[1];
  403.                         while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  404.                         USART_SendData(USART3,Piont);
  405. #endif
  406.                         //printf("\r\n%d ",Piont);
  407.                 }
  408.                 Piont=0;
  409.         }
  410.         TIM_ClearFlag(TIM2,TIM_FLAG_Update);   //清標(biāo)志
  411. }





  412. #if 0
  413. void TIM2_IRQHandler(void)        //5ms
  414. {
  415.         u8        EdgeSignal_up,EdgeSignal_down,ReadInputbuf;
  416.         if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET)
  417.            {       
  418.                 ADCprocess();
  419.                    TimeTick++;
  420.                 if(TimeTick%BoardStatus.SendDataFre==0)
  421.                 {
  422.                         SendDataFlg=1;
  423.                 }
  424.                 if(TimeTick%200==0)
  425.                 {
  426.                         //Time_1000msFlg=1;
  427.                         Runtime++;
  428.                         ConnectCounter++;
  429.                         printf("Connect  %d   \r\n",ConnectCounter);
  430.                 }
  431.                 if(BoardStatus.DigitalInputEnable==1)
  432.                 {
  433.                         ReadInputbuf=ReadInput();
  434.                         PreviousIn = CurrentIn;
  435.                         CurrentIn = ReadInputbuf;
  436.                         EdgeSignal_down=(~CurrentIn) & PreviousIn;
  437.                         EdgeSignal_up=CurrentIn & (~PreviousIn);
  438.                         if(EdgeSignal_down)
  439.                         {
  440.                                 BoardStatus.FallEdge=EdgeSignal_down;
  441.                         }
  442.                         else if(EdgeSignal_up)
  443.                         {
  444.                                 BoardStatus.RiseEdge=EdgeSignal_up;
  445.                         }
  446.                 }
  447.                 TIM_ClearFlag(TIM2,TIM_FLAG_Update);   //清標(biāo)志
  448.            }               
  449. }
  450. #endif


  451. /*********************************END OF FILE**********************************/
復(fù)制代碼

所有資料51hei提供下載:
code.rar (348.77 KB, 下載次數(shù): 7)
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-9-22 00:21 | 顯示全部樓層
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区在线观看视频 | 一本色道精品久久一区二区三区 | 91 在线| 国产一区二区三区四区在线观看 | 风间由美一区二区三区在线观看 | 日本高清视频网站 | 日韩视频在线播放 | 视频在线一区二区 | 一区二区三区国产精品 | 精品国产第一区二区三区 | 一区二区三区四区不卡视频 | 99re6在线| 国产欧美精品一区二区 | 91国在线高清视频 | 日本不卡一区二区三区在线观看 | 久久久久国产 | 韩日在线| 久久久久久免费观看 | 日本免费视频 | 久久精品久久久久久 | 狠狠草视频 | 午夜小电影| 国产成人99久久亚洲综合精品 | 天堂成人国产精品一区 | 国产美女在线播放 | 国产精品久久99 | 日韩欧美国产精品一区 | 最新国产精品精品视频 | 国产免费人成xvideos视频 | 国产精品一区二区久久久久 | 美女操网站 | 波波电影院一区二区三区 | 最近免费日本视频在线 | 中国美女一级黄色片 | 欧美日韩视频在线 | 国产成人91视频 | 日韩国产中文字幕 | 亚洲 中文 欧美 日韩 在线观看 | 在线观看 亚洲 | 日韩www | 亚洲天堂中文字幕 |