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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4016|回復: 2
打印 上一主題 下一主題
收起左側

BOX_FDC2214配套資料下載(含51單片機與stm32源碼)

[復制鏈接]
跳轉到指定樓層
樓主
FDC2214資料


所有資料51hei提供下載:
BOX_FDC2214配套資料(2).rar (4.94 MB, 下載次數: 91)


文件列表:
串口助手和驅動\
BoxTechFDC2214串口轉接模塊使用手冊.pdf
FDC2214-q1-官方文檔.pdf
FDC2214中文手冊-技術盒子翻譯.pdf
FDC2214模塊原理圖.pdf
STC51Client-FDC2214串口轉接模塊例程.rar
STM32Client-FDC2214串口轉接模塊例程.rar
看資料之前首先看我哦.pdf

單片機源程序如下:
  1. #include "stc15wxxx.h"
  2. #include <my_typedef.h>
  3. #include "client_task.h"
  4. //如果自己移植,需要更換"stc15wxxx.h"頭文件
  5. sbit LED = P1^1;

  6. void FDC_Set(ClientID , uint16_t fdc_data);

  7. uint32_t ch_data[4]={0};//通道數據
  8. uint8_t rx_buff[20] ={0};//接收BUFF
  9. uint8_t tx_buff[4] ={0};//發送BUFF

  10. void main(void)
  11. {
  12.         LED = 0;

  13. /*******配置串口(STC15W408AS單片機) 如果自己移植,需要更改此配置保證波特率為115200*******************/
  14.         SCON = 0x50;                //8位數據,可變波特率
  15.         AUXR |= 0x01;                //串口1選擇定時器2為波特率發生器
  16.         AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T

  17.         AUXR1 |= 0X40; //切換串口到3.6 3.7

  18.         T2L = 0xB8;                //設定定時初值
  19.         T2H = 0xFF;                //設定定時初值
  20.         AUXR |= 0x10;                //啟動定時器2
  21.         ES = 1;                  //使能串口1中斷
  22.         EA = 1;

  23. /**************************/
  24.         //配置時按照下面配置即可、、具體使用"client_task.h"頭文件內有詳細說明
  25.         FDC_Set(reset_device, BOXEnable);//復位芯片
  26.         FDC_Set(clk_src, Clk_src_internal);//選用內部時鐘
  27.         FDC_Set(autoscan, BOXEnable);
  28.         FDC_Set(sleep, BOXDisable);//退出睡眠模式 復位后一定要退出睡眠模式
  29.         while(1)
  30.         {

  31.         }       
  32. }

  33. uint16_t StartRx =0;
  34. void serial() interrupt 4
  35. {
  36.         uint8_t Res =0;
  37.        
  38.         if(RI)//判斷是否為接收中斷           (如果自己移植,修改此處的接收中斷條件判斷)
  39.         {//是
  40.                 Res = SBUF;//讀取本次接收到的一個字節數據  (如果自己移植,修改此處的數據讀取)
  41.                
  42.                 if(StartRx)//如果標記了已經開始接收幀數據
  43.                 {       
  44.                         rx_buff[StartRx -1] = Res;//接收幀數據
  45.                        
  46.                         if((StartRx -1) >= 17)
  47.                         {//接收完畢
  48.                                
  49.                                 if(rx_buff[16] != 0x55)//判斷幀尾是否為 0x55,是則存儲通道數據;否則舍棄本次接收,直接退出
  50.                                 {
  51.                                         return;

  52.                                 }
  53.                                 else
  54.                                 {//合成通道數據
  55.                                         LED = ~LED;
  56.                                         //此處接收的數據為傳感器采集的原始數據,同學們可自行轉換為電容值
  57.                                         ch_data[0] = (rx_buff[0]<<24) + (rx_buff[1]<<16) + (rx_buff[2]<<8) + rx_buff[3];
  58.                                         ch_data[1] = (rx_buff[4]<<24) + (rx_buff[5]<<16) + (rx_buff[6]<<8) + rx_buff[7];
  59.                                         ch_data[2] = (rx_buff[8]<<24) + (rx_buff[9]<<16) + (rx_buff[10]<<8) + rx_buff[11];
  60.                                         ch_data[3] = (rx_buff[12]<<24) + (rx_buff[13]<<16) + (rx_buff[14]<<8) + rx_buff[15];
  61.                                 }
  62.                                 StartRx = 0;//標記復位
  63.                         }
  64.                         StartRx ++;//標記遞增 為接收下一字節數據做準備
  65.                 }
  66.                 if((Res == 0x76))        //如果是幀頭且未開始接收通道數據
  67.                         StartRx = 1;//標記 下一次進入中斷開始接收幀數據

  68.                 RI = 0;        //清除中斷標志         (如果自己移植,修改此處的中斷標志清零)
  69.   }
  70. }

  71. void FDC_Set(ClientID ID, uint16_t fdc_data)
  72. {
  73.         uint8_t i;
  74.         tx_buff[0] = 0x56;
  75.         tx_buff[1] = (uint8_t)(ID);
  76.         tx_buff[2] = (uint8_t)(fdc_data >> 8);
  77.         tx_buff[3] = (uint8_t)(fdc_data);
  78.         tx_buff[4] = 0x55;
  79.         for(i=0;i< 5; i++)
  80.         {
  81.                 SBUF = tx_buff[i];
  82.                 while (!TI);
  83.                 TI = 0;
  84.         }
  85. }
復制代碼


stm32源碼:

  1. #include <stm32f4xx.h>
  2. #include "delay.h"
  3. #include "oled.h"
  4. #include "client_task.h"
  5. void Nvic_Init(void);
  6. void USART1_Configuration(void);
  7. void FDC_Set(ClientID ID, uint16_t data);
  8.        
  9. uint32_t ch_data[4]={0};//通道數據
  10. uint8_t rx_buff[32] ={0};//接收緩沖
  11. uint8_t tx_buff[5] ={0};//發送緩沖
  12. int main(void)
  13. {
  14.         delay_ms(1000);
  15.         USART1_Configuration();//配置串口1
  16.         Nvic_Init();
  17.        
  18.         OLED_Init();
  19.         OLED_ShowString(0,0,"CH0:",16);
  20.         OLED_ShowString(0,2,"CH1:",16);
  21.         OLED_ShowString(0,4,"CH2:",16);
  22.         OLED_ShowString(0,6,"CH3:",16);

  23.         delay_ms(1000);
  24.         //配置時按照下面配置即可、、具體使用"client_task.h"頭文件內有詳細說明
  25.         FDC_Set(reset_device, BOXEnable);//復位芯片
  26.         FDC_Set(clk_src, Clk_src_internal);//選用內部時鐘
  27.         FDC_Set(sleep, BOXDisable);//退出睡眠模式 復位后一定要退出睡眠模式
  28.         while(1)
  29.         {//顯示數據
  30.                 OLED_ShowNum(30,0,ch_data[0],9,16);//OLED顯示四個通道的數據
  31.                 OLED_ShowNum(30,2,ch_data[1],9,16);
  32.                 OLED_ShowNum(30,4,ch_data[2],9,16);
  33.                 OLED_ShowNum(30,6,ch_data[3],9,16);
  34.                 delay_ms(50);
  35.         }
  36. }
  37. /*
  38. 波特率一定要設置為115200·
  39. 如果要移植到51上:
  40. 1.把USART_GetITStatus(USART1, USART_IT_RXNE) != RESET這句更改為RI,并在if語句結尾加上RI =0;
  41. 2.把USART_ReceiveData(USART1)更換為SBUF
  42. */
  43. void USART1_IRQHandler(void)
  44. {//串口1中斷函數
  45.         uint8_t Res =0;
  46.         static uint8_t StartRx =0;
  47.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//判斷是否為接收中斷
  48.         {//是
  49.                 Res = USART_ReceiveData(USART1);//讀取本次接收到的一個字節數據
  50.                
  51.                 if(StartRx)//如果標記了已經開始接收幀數據
  52.                 {
  53.                         rx_buff[StartRx -1] = Res;//接收幀數據
  54.                        
  55.                         if((StartRx -1) >= 17)
  56.                         {//接收完畢
  57.                                 StartRx = 0;//標記復位
  58.                                 if(rx_buff[16] != 0x55)//判斷幀尾是否為 0x55,是則存儲通道數據;否則舍棄本次接收,直接退出
  59.                                         return;
  60.                                 else
  61.                                 {//合成通道數據
  62.                                         ch_data[0] = (rx_buff[0] * 16777216) + (rx_buff[1] * 65536) + (rx_buff[2] * 256) + rx_buff[3];
  63.                                         ch_data[1] = (rx_buff[4] * 16777216) + (rx_buff[5] * 65536) + (rx_buff[6] * 256) + rx_buff[7];
  64.                                         ch_data[2] = (rx_buff[8] * 16777216) + (rx_buff[9] * 65536) + (rx_buff[10] * 256) + rx_buff[11];
  65.                                         ch_data[3] = (rx_buff[12] * 16777216) + (rx_buff[13] * 65536) + (rx_buff[14] * 256) + rx_buff[15];
  66.                                 }
  67.                         }
  68.                         StartRx ++;//標記遞增 為接收下一字節數據做準備
  69.                 }
  70.                 if((Res == 0x76) && (!StartRx))        //如果是幀頭且未開始接收通道數據
  71.                         StartRx = 1;//標記 下一次進入中斷開始接收幀數據
  72.   }
  73. }
  74. void FDC_Set(ClientID ID, uint16_t data)
  75. {
  76.         uint8_t i;
  77.         tx_buff[0] = 0x56;
  78.         tx_buff[1] = (uint8_t)(ID);
  79.         tx_buff[2] = (uint8_t)(data >> 8);
  80.         tx_buff[3] = (uint8_t)(data);
  81.         tx_buff[4] = 0x55;
  82.         for(i=0;i< 5; i++)
  83.         {
  84.                 USART_SendData(USART1,tx_buff[i]);
  85.                 while (USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
  86.         }
  87. }

  88. void USART1_Configuration(void)
  89. {
  90.     USART_InitTypeDef usart;
  91.     GPIO_InitTypeDef  gpio;

  92.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2,ENABLE);
  93.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

  94.     GPIO_PinAFConfig(GPIOB,GPIO_PinSource6 ,GPIO_AF_USART1);
  95.     GPIO_PinAFConfig(GPIOB,GPIO_PinSource7 ,GPIO_AF_USART1);

  96.     gpio.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  97.     gpio.GPIO_Mode = GPIO_Mode_AF;
  98.     gpio.GPIO_OType = GPIO_OType_PP;
  99.     gpio.GPIO_Speed = GPIO_Speed_100MHz;
  100.     gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
  101.     GPIO_Init(GPIOB,&gpio);

  102.     usart.USART_BaudRate = 115200;
  103.     usart.USART_WordLength = USART_WordLength_8b;
  104.     usart.USART_StopBits = USART_StopBits_1;
  105.     usart.USART_Parity = USART_Parity_No;
  106.     usart.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//
  107.     usart.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  108.     USART_Init(USART1,&usart);

  109.     USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//串口空閑中斷

  110.     USART_Cmd(USART1,ENABLE);

  111. }

  112. void Nvic_Init(void)
  113. {
  114.         NVIC_InitTypeDef NVIC_InitStructure;//        /* NVIC_PriorityGroup */
  115.    
  116.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //優先級分組2:搶占優先級(0-3):相應優先級(0-3)
  117.    
  118.     NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                //DMA2STR1CH5
  119.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  120.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  121.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  122.     NVIC_Init(&NVIC_InitStructure);
  123. }

復制代碼



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

使用道具 舉報

沙發
ID:496595 發表于 2019-3-23 10:52 | 只看該作者
感謝分享
回復

使用道具 舉報

板凳
ID:500356 發表于 2019-4-23 13:04 | 只看該作者
不錯喔
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线视频一区二区 | 亚洲精品久久久久中文字幕欢迎你 | 中文字幕免费在线 | 亚洲国产精品一区 | 精品综合久久久 | 国产精品久久久久aaaa樱花 | 国产一区二区三区四区三区四 | 中文字幕高清在线 | 99精品视频一区二区三区 | 欧美韩一区二区 | 99国产精品99久久久久久粉嫩 | 91高清视频在线观看 | 天天艹逼网 | 成人在线免费看 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲欧美中文日韩在线v日本 | 色视频欧美| 在线播放国产一区二区三区 | 免费的色网站 | 久久精品亚洲精品国产欧美 | 国产一级片一区二区 | 97超碰人人 | 中文字字幕在线中文乱码范文 | 国产在线一区二区三区 | 天天射网站 | 亚洲天堂999 | 国产欧美日韩一区二区三区在线 | 在线观看中文字幕一区二区 | 亚洲一区日韩 | 国产精品一区二区在线 | 中文字幕 欧美 日韩 | 欧美极品视频在线观看 | 欧美国产日韩一区 | 久久男人 | 久久国产精品72免费观看 | 久久久爽爽爽美女图片 | 精品国产一区二区三区久久 | 日韩精品一区二区三区在线观看 | 欧洲尺码日本国产精品 | 久久午夜精品福利一区二区 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 |