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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6151|回復: 0
打印 上一主題 下一主題
收起左側(cè)

stm32驅(qū)動NBlot模塊程序?qū)嵗?/span>

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:404189 發(fā)表于 2018-9-29 21:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
NBlot+stm32單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "USART.h"
  3. #include "dht11.h"
  4. #include "delay.h"
  5. #include "string.h"


  6. char error[6]={"ERROR"};
  7. u8 num1,num2;
  8. int jieshou(u16 i)
  9. {
  10.         u16 t,n=0;
  11.         while(1)
  12.         {
  13.     if(flag)
  14.                 {               
  15.                         if((n==0)&&(strstr(USART_RX_BUF,error)!=NULL))
  16.       {
  17.                             flag=0;
  18.                             length=0;
  19.                             return 1;
  20.                         }           
  21.                         for(t=0;t<length;t++)
  22.                         {
  23.                                 USART_SendData(USART1, USART_RX_BUF[t]);//向串口1發(fā)送數(shù)據(jù)
  24.                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
  25.                         }
  26.                         flag=0;
  27.                         length=0;
  28.                         n++;
  29.                 }
  30.                 if(n==i) return 0;
  31.         }
  32. }
  33. void delay(int x)
  34. {
  35.         int y,z;
  36.         for(z=0;z<x;z++)
  37.           for(y=0;y<7000;y++);
  38. }

  39. //extern uint8_t ucTemp1,ucTemp2;
  40. int main()
  41. {
  42.         int h=0;
  43.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  44.         delay_init();
  45.         uart_init(115200);         //串口初始化為115200
  46.         usart2_init(9600);
  47.         DHT11_Init();
  48.   delay(6000);
  49.         USART2_SendData("AT+MIPLCREATE=49,130031F10003F2002304001100000000000000123138332E3233302E34302E34303A35363833000131F30008C000000000,0,49,0\r\n");
  50.         jieshou(2);
  51.         USART2_SendData("AT+MIPLADDOBJ=0,3303,1,\"1\",1,0\r\n");
  52.         jieshou(1);
  53.         USART2_SendData("AT+MIPLADDOBJ=0,3304,1,\"1\",1,0\r\n");
  54.         jieshou(1);
  55.         USART2_SendData("AT+MIPLNOTIFY=0,0,3303,0,5700,4,4,\"29.8\",0,0\r\n");
  56.         jieshou(1);
  57.         USART2_SendData("AT+MIPLNOTIFY=0,0,3304,0,5700,4,4,\"29.8\",0,0\r\n");
  58.         jieshou(1);
  59.         
  60.         USART2_SendData("AT+MIPLOPEN=0,3000,30\r\n");
  61.         while(jieshou(6))
  62.                 USART2_SendData("AT+MIPLOPEN=0,3000,30\r\n");
  63.         k=1;        
  64.         while(1)        
  65.         {
  66.                 if(DHT11_Read_Data(&num1,&num2)==0)
  67.                 {
  68.         usart2_send1(num1);
  69.                           usart2_send2(num2);

  70.                 }
  71.                 for(h=0;h<5;h++)
  72.                    delay_ms(1000);
  73.         }
  74.         
  75.         
  76.         
  77. }
復制代碼
  1. #include "sys.h"
  2. #include "usart.h"         
  3. #include "string.h"
  4. //////////////////////////////////////////////////////////////////////////////////         
  5. //如果使用ucos,則包括下面的頭文件即可.
  6. #if SYSTEM_SUPPORT_OS
  7. #include "includes.h"                                        //ucos 使用         
  8. #endif

  9. //加入以下代碼,支持printf函數(shù),而不需要選擇use MicroLIB         
  10. #if 1
  11. #pragma import(__use_no_semihosting)            
  12. //標準庫需要的支持函數(shù)                 
  13. struct __FILE
  14. {
  15.         int handle;

  16. };

  17. FILE __stdout;      
  18. //定義_sys_exit()以避免使用半主機模式   
  19. _sys_exit(int x)
  20. {
  21.         x = x;
  22. }
  23. //重定義fputc函數(shù)
  24. int fputc(int ch, FILE *f)
  25. {      
  26.         while((USART2->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢   
  27.     USART2->DR = (u8) ch;      
  28.         return ch;
  29. }
  30. #endif

  31. #if EN_USART1_RX   //如果使能了接收
  32. //串口1中斷服務(wù)程序
  33. //注意,讀取USARTx->SR能避免莫名其妙的錯誤           
  34. char USART_RX_BUF[USART_REC_LEN];     //接收緩沖,最大USART_REC_LEN個字節(jié).

  35. u16 USART_RX_STA=0;       //接收狀態(tài)標記         
  36. u16 length=0,len;
  37. u8 flag=0;
  38. u8 k=0;
  39. char ok[3]={"OK"};
  40. void uart_init(u32 bound){
  41.   //GPIO端口設(shè)置
  42.   GPIO_InitTypeDef GPIO_InitStructure;
  43.         USART_InitTypeDef USART_InitStructure;
  44.         NVIC_InitTypeDef NVIC_InitStructure;
  45.          
  46.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //使能USART1,GPIOA時鐘
  47.   
  48.         //USART1_TX   GPIOA.9
  49.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  50.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  51.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //復用推挽輸出
  52.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
  53.    
  54.   //USART1_RX          GPIOA.10初始化
  55.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  56.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
  57.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

  58.   //Usart1 NVIC 配置
  59.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  60.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//搶占優(yōu)先級3
  61.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子優(yōu)先級3
  62.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
  63.         NVIC_Init(&NVIC_InitStructure);        //根據(jù)指定的參數(shù)初始化VIC寄存器
  64.   
  65.    //USART 初始化設(shè)置

  66.         USART_InitStructure.USART_BaudRate = bound;//串口波特率
  67.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長為8位數(shù)據(jù)格式
  68.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個停止位
  69.         USART_InitStructure.USART_Parity = USART_Parity_No;//無奇偶校驗位
  70.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
  71.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收發(fā)模式

  72.   USART_Init(USART1, &USART_InitStructure); //初始化串口1
  73.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//開啟串口接受中斷
  74.         USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);

  75.   USART_Cmd(USART1, ENABLE);                    //使能串口1

  76. }

  77. void usart2_init(u32 bound)
  78. {
  79.                 NVIC_InitTypeDef NVIC_InitStructure;
  80.                 USART_InitTypeDef USART2_InitStructure;
  81.                 GPIO_InitTypeDef GPIO_InitStructure;
  82.         
  83.                 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//打開串口2時鐘
  84.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打開GPIOA時鐘
  85.         
  86. //初始化USART2-TX        
  87.         
  88.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
  89.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  90.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  91.         
  92.                 GPIO_Init(GPIOA, &GPIO_InitStructure);
  93.         
  94. //初始化USART2-RX               
  95.         
  96.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
  97.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  98.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  99.         
  100.                 GPIO_Init(GPIOA, &GPIO_InitStructure);

  101. //USART2中斷優(yōu)先級設(shè)置

  102.         NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  103.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//搶占優(yōu)先級3
  104.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                //子優(yōu)先級3
  105.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
  106.         NVIC_Init(&NVIC_InitStructure);        //根據(jù)指定的參數(shù)初始化VIC寄存器

  107. //USART2——初始化設(shè)置

  108.         USART2_InitStructure.USART_BaudRate=bound;
  109.         USART2_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
  110.         USART2_InitStructure.USART_Parity=USART_Parity_No;
  111.         USART2_InitStructure.USART_StopBits=USART_StopBits_1;
  112.         USART2_InitStructure.USART_WordLength=USART_WordLength_8b;
  113.         USART2_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  114.         
  115.         USART_Init(USART2, &USART2_InitStructure);
  116.         
  117.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//開啟接收中斷
  118.         USART_ITConfig(USART2, USART_IT_IDLE, ENABLE);//開啟空閑中斷
  119.   USART_Cmd(USART2, ENABLE);                    //使能串口

  120. while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);

  121. }


  122. void USART2_SendData(char* buf)
  123. {
  124.         u8 i;
  125.         i=strlen((char *)buf);

  126.         for(;i>0;i--)
  127.         {
  128.                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
  129.                 USART_SendData(USART2,*buf++);
  130.         }
  131. }


  132. void Usart_SendByte(USART_TypeDef * pUSARTX,uint8_t ch)
  133. {
  134.         USART_SendData(pUSARTX,ch);
  135.         while(USART_GetFlagStatus(pUSARTX,USART_FLAG_TXE)==RESET);   //等待發(fā)送寄存器為空
  136. }

  137. void Usart_SendString(USART_TypeDef * pUSARTX,char *str)
  138. {
  139.         unsigned int k=0;
  140.         while(*(str+k)!='\0')
  141.         {
  142.            Usart_SendByte(pUSARTX,*(str+k));
  143.                 k++;
  144.         }
  145.         while(USART_GetFlagStatus(pUSARTX,USART_FLAG_TC)==RESET);
  146. }

  147. void USART2_IRQHandler(void)   
  148. {
  149.           u8 Res;
  150.                 if(USART_GetITStatus(USART2,USART_IT_RXNE)==!RESET)
  151.                 {
  152.                
  153.                         USART_RX_BUF[length++]=USART2->DR;
  154.                         USART_ClearITPendingBit(USART2,USART_IT_RXNE);
  155.                
  156.                 }
  157.                 if(USART_GetITStatus(USART2,USART_IT_IDLE)!=RESET)
  158.                 {
  159.                         Res=Res;
  160.                         Res=USART2->SR;  //狀態(tài)寄存器
  161.                         Res=USART2->DR;
  162.                         flag=1;               
  163.                 }
  164.           if(k!=0)
  165.                 {
  166.                         if(flag)
  167.                         {               
  168.                                         for(len=0;len<length;len++)
  169.                                         {
  170.                                         USART_SendData(USART1, USART_RX_BUF[len]);//向串口1發(fā)送數(shù)據(jù)
  171.                                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
  172.                                         }
  173.                                         flag=0;
  174.                                         length=0;
  175.                                 
  176.                         }
  177.                 }
  178.         
  179. }

  180. void usart2_send1(u8 y)
  181. {
  182.           u8 ge,shi;
  183.     ge=y%10+48;
  184.           shi=y/10+48;
  185.                 Usart_SendString(USART2,"\r\nAT+MIPLNOTIFY=0,0,3303,0,5700,4,4,\"");        
  186.                 Usart_SendByte(USART2,shi);
  187.           Usart_SendByte(USART2,ge);
  188.                 Usart_SendString(USART2,"\",0,0\r\n");
  189. }

  190. void usart2_send2(u8 y)
  191. {
  192.           u8 ge,shi;
  193.     ge=y%10+48;
  194.           shi=y/10+48;
  195.                 Usart_SendString(USART2,"\r\nAT+MIPLNOTIFY=0,0,3304,0,5700,4,4,\"");        
  196.                 Usart_SendByte(USART2,shi);
  197.           Usart_SendByte(USART2,ge);
  198.                 Usart_SendString(USART2,"\",0,0\r\n");
  199. }

  200. #endif        
復制代碼


所有資料51hei提供下載:
NB IOT 串口.rar (371.74 KB, 下載次數(shù): 61)


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产福利网站 | 国产精品久久久久久久粉嫩 | 中文字幕成人 | 国产一级片久久久 | 亚洲欧美一区二区三区1000 | 国产亚洲成av人片在线观看桃 | 日韩久草 | 97久久精品午夜一区二区 | 一区二区不卡 | 国产精品久久久久久久久久免费 | 在线不卡视频 | 中文字幕视频一区二区 | 中文字幕亚洲在线 | 国产视频日韩 | 99精品视频免费观看 | 久久夜色精品国产 | 一级黄色片网站 | 免费大黄视频 | 一区二区三区精品在线视频 | 免费国产精品久久久久久 | 国产精品v | 羞羞视频在线免费 | 国产日韩欧美91 | 亚洲免费人成在线视频观看 | 中文字幕在线一区二区三区 | 免费色网址 | 久久成人高清视频 | 视频二区 | 久久国内 | 在线观看中文字幕视频 | 福利av在线| 久久精品一区二区三区四区 | 欧美精品中文字幕久久二区 | 亚洲精品第一 | 黄 色 毛片免费 | 欧美日韩毛片 | 久久久国产精品一区 | 亚洲成人av一区二区 | 精品久久久久久久人人人人传媒 | 91久久久久久久久久久 | 国产精品免费在线 |