找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5129|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

基于新唐M0內(nèi)核的智能空氣檢測(cè)儀程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
NuMicro® NUC131系列特色為寬電壓工作范圍2.5V至5.5V, 工作溫度: -40℃至105℃, 內(nèi)建22.1184MHz高精度晶振(1%準(zhǔn)確度)。 備有豐富的外設(shè), 如CAN2.0A/B, 定時(shí)器, 看門(mén)狗定時(shí)器,多組UART, SPI, I2C, PWM, 12位ADC, 模擬比較器等.提供多種包裝 LQFP48, LQFP64。
1.lcd段碼屏顯示
2.傳感器部分:溫濕度  SHT31  PM2.5: 四方光電  PM2008  CO2 : CM1106  TVOC傳感器
3.4路觸摸按鍵:  經(jīng)典算法 : 長(zhǎng)按 短按  持續(xù)按鍵  復(fù)合按鍵
5,慶科wifi模塊 串口通信
6.鋰電池 充電 升壓 二合一
7.設(shè)備聯(lián)控:采用標(biāo)準(zhǔn)的MOSBUS RTU 協(xié)議


單片機(jī)源程序如下:
  1. /**************************************************************************//**
  2. * @file     main.c
  3. * @version  V2.00
  4. * $Revision: 5 $
  5. * $Date: 15/01/16 11:44a $
  6. * @brief    Implement timer counting in periodic mode.
  7. * @note
  8. * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  9. ******************************************************************************/
  10. #include        "define.H"

  11. #define PLL_CLOCK           50000000

  12. /*---------------------------------------------------------------------------------------------------------*/
  13. /* Global Interface Variables Declarations                                                                 */
  14. /*---------------------------------------------------------------------------------------------------------*/
  15. volatile uint32_t g_au32TMRINTCount[4] = {0};

  16. uint8_t PwmIO_count;


  17. uint16_t        PM_value;
  18. uint16_t        CO2_value;
  19. uint16_t        HCHO_value;

  20. #if 0
  21. /*
  22. V003 2019-03-02
  23. 1,Power on and power off button change to touch leave control,
  24.     perviously is short press control.
  25. 2.WIFI COM temperture,perviously version PCBA send indoor temperture,
  26.    modified to send inlet air temperature.

  27.    
  28. V009 2019-05-25
  29. 1.Add DS1302 RTC
  30. 2.Adjust the GPIO with 20190325 schematic

  31. V010 2019-05-29
  32. 1.Set PM2.5 value 999 up  limit
  33. 2.Modify the button sequence except child lock.
  34. */
  35. #endif


  36. /**
  37. * @brief       Timer0 IRQ
  38. *
  39. * @param       None
  40. *
  41. * @return      None
  42. *
  43. * @details     The Timer0 default IRQ, declared in startup_NUC131.s.
  44. */
  45. void TMR0_IRQHandler(void)
  46. {
  47.     if(TIMER_GetIntFlag(TIMER0) == 1)
  48.     {
  49.         /* Clear Timer0 time-out interrupt flag */
  50.         TIMER_ClearIntFlag(TIMER0);
  51.                 if(Time.t_1ms==0)
  52.                 {
  53.                         Time.t_1ms=10;
  54.                         F_10ms=1;
  55.                         Time_handler();
  56.                 }
  57.                 Time.t_1ms--;
  58.                 F_1ms=1;
  59.                 if (++PwmIO_count > 14)
  60.                         PwmIO_count = 0;
  61.                 if (PwmIO_set > PwmIO_count)
  62.                         LedCom_pin = 1;
  63.                 else
  64.                         LedCom_pin = 0;
  65.         //        LedCom_pin=1;
  66.     }
  67. }

  68. /**
  69. * @brief       Timer1 IRQ
  70. *
  71. * @param       None
  72. *
  73. * @return      None
  74. *
  75. * @details     The Timer1 default IRQ, declared in startup_NUC131.s.
  76. */
  77. void TMR1_IRQHandler(void)
  78. {
  79.     if(TIMER_GetIntFlag(TIMER1) == 1)
  80.     {
  81.         /* Clear Timer1 time-out interrupt flag */
  82.         
  83.         g_au32TMRINTCount[1]++;
  84.     }
  85. }

  86. /**
  87. * @brief       Timer2 IRQ
  88. *
  89. * @param       None
  90. *
  91. * @return      None
  92. *
  93. * @details     The Timer2 default IRQ, declared in startup_NUC131.s.
  94. */
  95. void TMR2_IRQHandler(void)
  96. {
  97.     if(TIMER_GetIntFlag(TIMER2) == 1)
  98.     {
  99.         /* Clear Timer2 time-out interrupt flag */
  100.         TIMER_ClearIntFlag(TIMER2);
  101.                 TIMER_ClearIntFlag(TIMER1);
  102.                 if(Buzz.B_Buzzer_Model)
  103.                 {
  104.                         if(Buzz_Frec_pin)
  105.                                 Buzz_Frec_pin=0;
  106.                         else
  107.                                 Buzz_Frec_pin=1;
  108.                 }
  109.     }
  110. }

  111. /**
  112. * @brief       Timer3 IRQ
  113. *
  114. * @param       None
  115. *
  116. * @return      None
  117. *
  118. * @details     The Timer3 default IRQ, declared in startup_NUC131.s.
  119. */
  120. void TMR3_IRQHandler(void)
  121. {
  122.     if(TIMER_GetIntFlag(TIMER3) == 1)
  123.     {
  124.         /* Clear Timer3 time-out interrupt flag */
  125.         TIMER_ClearIntFlag(TIMER3);

  126.         g_au32TMRINTCount[3]++;
  127.     }
  128. }

  129. #if 0
  130. void SYS_Init(void)
  131. {
  132.     /*---------------------------------------------------------------------------------------------------------*/
  133.     /* Init System Clock                                                                                       */
  134.     /*---------------------------------------------------------------------------------------------------------*/
  135.     /* Enable HIRC clock */
  136.     CLK_EnableXtalRC(CLK_PWRCON_IRC22M_EN_Msk);

  137.     /* Waiting for HIRC clock ready */
  138.     CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);

  139.     /* Switch HCLK clock source to HIRC */
  140.     CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));

  141.     /* Enable HXT */
  142. //    CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);

  143.     /* Waiting for clock ready */
  144. //    CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);

  145.     /* Set core clock as PLL_CLOCK from PLL and SysTick source to HCLK/2*/
  146.     CLK_SetCoreClock(PLL_CLOCK);
  147.     CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLK_S_HCLK_DIV2);

  148.     /* Enable peripheral clock */
  149.     CLK_EnableModuleClock(UART0_MODULE);
  150. //   CLK_EnableModuleClock(UART4_MODULE);
  151.     CLK_EnableModuleClock(TMR0_MODULE);
  152.     CLK_EnableModuleClock(TMR1_MODULE);
  153.     CLK_EnableModuleClock(TMR2_MODULE);
  154.     CLK_EnableModuleClock(TMR3_MODULE);

  155.     /* Peripheral clock source *///CLK_CLKSEL1_UART_S_PLL
  156.     CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  157. //   CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  158.     CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
  159.     CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
  160.     CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2_S_HIRC, 0);
  161.     CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3_S_HIRC, 0);

  162.     /*---------------------------------------------------------------------------------------------------------*/
  163.     /* Init I/O Multi-function                                                                                 */
  164.     /*---------------------------------------------------------------------------------------------------------*/
  165.     /* Set PB multi-function pins for UART0 RXD, TXD */
  166.                 /* Set GPB multi-function pins for UART0 RXD(PB.0) and TXD(PB.1) */
  167.     SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
  168.     SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
  169.                
  170.         //        SYS->GPB_MFP &= ~(SYS_GPC_MFP_PC7_Msk | SYS_GPC_MFP_PC6_Msk);
  171.         //        SYS->GPB_MFP |= SYS_GPC_MFP_PC7_UART4_RXD | SYS_GPC_MFP_PC6_UART4_TXD;
  172. }
  173. #endif

  174. void SYS_Init(void)
  175. {
  176.         /*---------------------------------------------------------------------------------------------------------*/
  177.         /* Init System Clock                                                                                       */
  178.         /*---------------------------------------------------------------------------------------------------------*/

  179.         /* Enable Internal RC 22.1184MHz clock */
  180.         CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);

  181.         /* Waiting for Internal RC clock ready */
  182.         CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);

  183.         /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
  184.         CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));

  185.         /* Enable external XTAL 12MHz clock */
  186.         //    CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);

  187.         /* Waiting for external XTAL clock ready */
  188.         //    CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);

  189.         /* Set core clock as PLL_CLOCK from PLL */
  190.         CLK_SetCoreClock(PLL_CLOCK);

  191.         /* Enable UART module clock */
  192.         CLK_EnableModuleClock(UART0_MODULE);
  193.         CLK_EnableModuleClock(UART1_MODULE);
  194.         CLK_EnableModuleClock(UART2_MODULE);
  195.         CLK_EnableModuleClock(UART3_MODULE);
  196.         CLK_EnableModuleClock(UART4_MODULE);
  197.         CLK_EnableModuleClock(TMR0_MODULE);
  198.         CLK_EnableModuleClock(TMR1_MODULE);
  199.         CLK_EnableModuleClock(TMR2_MODULE);
  200.         CLK_EnableModuleClock(TMR3_MODULE);

  201.         /* Select UART module clock source */
  202.         // CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));

  203.         /* Select UART module clock source */
  204.         CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  205.         CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  206.         CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  207.         CLK_SetModuleClock(UART3_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  208.         CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
  209.                
  210.         CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
  211.         CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
  212.         CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2_S_HIRC, 0);
  213.         CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3_S_HIRC, 0);
  214.        
  215.         /* Enable ADC module clock */
  216.     CLK_EnableModuleClock(ADC_MODULE);
  217.         /* ADC clock source is 22.1184MHz, set divider to 7, ADC clock is 22.1184/7 MHz */
  218.     CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_CLKDIV_ADC(7));
  219.         /*---------------------------------------------------------------------------------------------------------*/
  220.         /* Init I/O Multi-function                                                                                 */
  221.         /*---------------------------------------------------------------------------------------------------------*/

  222.         /* Set GPB multi-function pins for UART0 RXD(PB.0) and TXD(PB.1) */
  223.         SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
  224.         SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;

  225. //        SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB4_Msk | SYS_GPB_MFP_PB5_Msk);
  226. //        SYS->GPB_MFP |= SYS_GPB_MFP_PB4_UART1_RXD | SYS_GPB_MFP_PB5_UART1_TXD;

  227.         SYS->GPB_MFP &= ~(  SYS_GPB_MFP_PB5_Msk);
  228.         SYS->GPB_MFP |=   SYS_GPB_MFP_PB5_UART1_TXD;

  229.         SYS->GPD_MFP &= ~(SYS_GPD_MFP_PD14_Msk | SYS_GPD_MFP_PD15_Msk);
  230.         SYS->GPD_MFP |= SYS_GPD_MFP_PD14_UART2_RXD | SYS_GPD_MFP_PD15_UART2_TXD;

  231. //        SYS->GPA_MFP &= ~(SYS_GPA_MFP_PA3_Msk | SYS_GPA_MFP_PA2_Msk);
  232. //        SYS->GPA_MFP |= SYS_GPA_MFP_PA3_UART3_RXD | SYS_GPA_MFP_PA2_UART3_TXD;

  233.         SYS->ALT_MFP4 &= ~(SYS_ALT_MFP4_PA5_Msk | SYS_ALT_MFP4_PA6_Msk);
  234.         SYS->ALT_MFP4 |= SYS_ALT_MFP4_PA5_UART3_RXD | SYS_ALT_MFP4_PA6_UART3_TXD;
  235.         SYS->GPA_MFP &= ~(SYS_GPA_MFP_PA5_Msk | SYS_GPA_MFP_PA6_Msk);
  236.         SYS->GPA_MFP |= SYS_GPA_MFP_PA5_UART3_RXD | SYS_GPA_MFP_PA6_UART3_TXD;
  237.        
  238.         SYS->GPC_MFP &= ~(SYS_GPC_MFP_PC7_Msk | SYS_GPC_MFP_PC6_Msk);
  239.         SYS->GPC_MFP |= SYS_GPC_MFP_PC7_UART4_RXD | SYS_GPC_MFP_PC6_UART4_TXD;
  240.         /*
  241.         SYS->GPF_MFP &= ~(SYS_GPF_MFP_PF0_Msk | SYS_GPF_MFP_PF1_Msk);
  242.         SYS->GPF_MFP |= SYS_GPF_MFP_PF0_GPIO | SYS_GPF_MFP_PF1_GPIO; */
  243.          /* Configure the GPA0 - GPA3 ADC analog input pins */
  244.     SYS->GPA_MFP &= ~( SYS_GPA_MFP_PA7_Msk ) ;
  245.     SYS->GPA_MFP |=  SYS_GPA_MFP_PA7_ADC7;
  246. }

  247. void GPIO_Init(void)
  248. {
  249.         #if 0
  250.         GPIO_SetMode(PC, BIT6, GPIO_PMD_OUTPUT);//UART4 TX
  251.         PC6=0;
  252.         GPIO_SetMode(PA, BIT6, GPIO_PMD_OUTPUT);//UART4 TX
  253.         PA6=0;
  254.         GPIO_SetMode(PB, BIT1, GPIO_PMD_OUTPUT);//UART4 TX
  255.         PB1=0;
  256. #endif
  257.         GPIO_SetMode(PA,BIT1,GPIO_PMD_OUTPUT);//Sensor power
  258.         GPIO_SetMode(PA,BIT12,GPIO_PMD_OUTPUT);//SW485
  259.         GPIO_SetMode(PA,BIT13,GPIO_PMD_OUTPUT);//BackLight
  260.         GPIO_SetMode(PA,BIT2,GPIO_PMD_INPUT);//KEY
  261.         GPIO_SetMode(PA,BIT3,GPIO_PMD_INPUT);
  262.         GPIO_SetMode(PA,BIT4,GPIO_PMD_INPUT);
  263.        
  264.         GPIO_SetMode(PA,BIT14,GPIO_PMD_OUTPUT);//Led Com
  265.         GPIO_SetMode(PC,BIT0,GPIO_PMD_OUTPUT);//Led
  266.         GPIO_SetMode(PC,BIT1,GPIO_PMD_OUTPUT);//Led
  267.         GPIO_SetMode(PC,BIT2,GPIO_PMD_OUTPUT);//Led
  268.         GPIO_SetMode(PC,BIT3,GPIO_PMD_OUTPUT);//Led
  269.        
  270.         GPIO_SetMode(PB,BIT3,GPIO_PMD_OUTPUT);//Buzz`
  271.         GPIO_SetMode(PD,BIT6,GPIO_PMD_OUTPUT);//Buzz
  272.         GPIO_SetMode(PD,BIT7,GPIO_PMD_OUTPUT);//Sensor power
  273.         GPIO_SetMode(PB,BIT2,GPIO_PMD_OUTPUT);//WIFI power
  274.         GPIO_SetMode(PB,BIT12,GPIO_PMD_INPUT);//CHG
  275.        
  276.         GPIO_SetMode(PB,BIT15,GPIO_PMD_OUTPUT);//1302
  277.         GPIO_SetMode(PF,BIT1,GPIO_PMD_OUTPUT);//1302
  278.         GPIO_SetMode(PF,BIT0,GPIO_PMD_OUTPUT);//1302
  279.         WIFI_EN();
  280.         PA14=1;
  281.        
  282.         Led_pin1 = 0;
  283.         Led_pin2 = 0;
  284.         Led_pin3 = 0;
  285.         Led_pin4 = 0;
  286. //        PD7 = 1;
  287.        
  288.         /* Led_pin1=0;
  289.         Led_pin2=0;
  290.         Led_pin3=0;
  291.         Led_pin4=0; */
  292.        
  293.         //GPIO_SetMode(PB,BIT12,GPIO_PMD_OUTPUT);//TEST`
  294.         SW485_DIS();
  295. }





  296. uint8_t  Adc_Cnt;
  297. uint32_t Adc_buffer2;
  298. uint32_t Adc_buffer1;
  299. uint16_t VBatMv=0;


  300. void ADC_Init(void)
  301. {
  302.         ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_CONTINUOUS, 0x80);

  303.         /* Power on ADC module */
  304.         ADC_POWER_ON(ADC);

  305.         /* Clear the A/D interrupt flag for safe */
  306.         ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
  307.        
  308.         /* Start A/D conversion */
  309.         ADC_START_CONV(ADC);
  310. }



  311. void ADC_Scan(void)
  312. {
  313.         /* Clear the A/D interrupt flag for safe */
  314. //        ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);

  315.         /* Start A/D conversion */
  316. //        ADC_START_CONV(ADC);
  317.        
  318.         /* Wait conversion done */
  319. //        while(!ADC_GET_INT_FLAG(ADC, ADC_ADF_INT));

  320.         /* Clear the A/D interrupt flag for safe */
  321.         ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);

  322.         Adc_buffer1+=ADC_GET_CONVERSION_DATA(ADC,7);
  323.        
  324.         if(++Adc_Cnt<149)
  325.                 return;

  326.                 Adc_buffer2=Adc_buffer1;
  327.                 Adc_Cnt=0;
  328.                 Adc_buffer1=0;
  329.                
  330.                 if(VBatMv==0)
  331.                 {
  332.                         VBatMv=Adc_buffer2/64;
  333.                 }
  334.                 else
  335.                 {
  336.                         VBatMv+=Adc_buffer2/64;
  337.                         VBatMv/=2;
  338.                 }
  339. }





  340. /*---------------------------------------------------------------------------------------------------------*/
  341. /*  MAIN function                                                                                          */
  342. /*---------------------------------------------------------------------------------------------------------*/
  343. int main(void)
  344. {
  345.     volatile uint32_t u32InitCount;

  346.     /* Unlock protected registers */
  347.     SYS_UnlockReg();

  348.     /* Init System, peripheral clock and multi-function I/O */
  349.     SYS_Init();

  350.     /* Lock protected registers */
  351.     SYS_LockReg();

  352.     /* Init UART0 for printf */
  353.         UART0_Init();
  354.         UART1_Init();
  355.         UART2_Init();
  356.         UART3_Init();
  357.         UART4_Init();
  358.        
  359.         GPIO_Init();
  360.         TVOC_init();
  361.         IIC_Init();
  362.         InitCHM_01A();
  363.         PA13=1;
  364.         Rtc_init();
  365.         Init_DS1302();

  366.     /* Open Timer0 in periodic mode, enable interrupt and 1 interrupt tick per second */
  367.     TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000);
  368.     TIMER_EnableInt(TIMER0);

  369.     /* Open Timer1 in periodic mode, enable interrupt and 2 interrupt ticks per second */
  370.     TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 2);
  371.     TIMER_EnableInt(TIMER1);

  372.     /* Open Timer2 in periodic mode, enable interrupt and 4 interrupt ticks per second */
  373.     TIMER_Open(TIMER2, TIMER_PERIODIC_MODE, 4);
  374.     TIMER_EnableInt(TIMER2);

  375.     /* Open Timer3 in periodic mode, enable interrupt and 8 interrupt ticks per second */
  376.     TIMER_Open(TIMER3, TIMER_PERIODIC_MODE, 8);
  377.     TIMER_EnableInt(TIMER3);

  378.     /* Enable Timer0 ~ Timer3 NVIC */
  379.     NVIC_EnableIRQ(TMR0_IRQn);
  380.     NVIC_EnableIRQ(TMR1_IRQn);
  381.     NVIC_EnableIRQ(TMR2_IRQn);
  382.     NVIC_EnableIRQ(TMR3_IRQn);

  383.     /* Start Timer0 ~ Timer3 counting */
  384.     TIMER_Start(TIMER0);
  385.     TIMER_Start(TIMER1);
  386.     TIMER_Start(TIMER2);
  387.     TIMER_Start(TIMER3);

  388.         SetTemp=25;
  389.         SetHum=50;
  390.         ADC_Init();
  391.         Init1729();
  392.         WriteDDRAM();
  393.         WriteDDRAM();
  394. //        WriteDDRAM();
  395. //        Buzz.B_Buzzer_Model=1;
  396.         UART_ClearIntFlag(UART1, UART_ISR_DATWKIF_Msk | UART_ISR_CTSWKIF_Msk | UART_ISR_BUF_ERR_INT_Msk|
  397.                 UART_ISR_MODEM_INT_Msk| UART_ISR_RLS_INT_Msk);
  398.                
  399.         UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk));
  400.         UART_EnableInt(UART1, (UART_IER_RDA_IEN_Msk));
  401. ……………………

  402. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
Airbox_190525.7z (2.17 MB, 下載次數(shù): 34)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

5#
ID:70490 發(fā)表于 2020-6-4 20:53 | 只看該作者
參考學(xué)習(xí)一下,就是原理圖看不清楚
回復(fù)

使用道具 舉報(bào)

地板
ID:421595 發(fā)表于 2019-12-19 08:14 | 只看該作者
學(xué)習(xí)參考
回復(fù)

使用道具 舉報(bào)

板凳
ID:421595 發(fā)表于 2019-12-18 08:47 | 只看該作者
本帖最后由 舞者人生 于 2019-12-19 08:24 編輯

參考學(xué)習(xí)一下,原理圖看不清楚,能不給出清晰版的
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:188945 發(fā)表于 2019-12-11 10:59 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

樓主
ID:347467 發(fā)表于 2019-12-9 15:40 | 只看該作者
謝謝分享。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表