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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32+AD7606芯片源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:801023 發表于 2020-7-10 14:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于STN32F407的AD7606芯片ADC采樣例程,使用FSMC接口

單片機源程序如下:
  1. #include "bsp.h"                /* 如果要用ST的固件庫,必須包含這個文件 */

  2. /* 定義例程名和例程發布日期 */
  3. #define EXAMPLE_NAME        "F4-029_AD7606模塊例程"
  4. #define EXAMPLE_DATE        "02-01"
  5. #define DEMO_VER                "1.0"

  6. /* 僅允許本文件內調用的函數聲明 */
  7. static void PrintfLogo(void);

  8. /*
  9. *********************************************************************************************************
  10. *        函 數 名: main
  11. *        功能說明: c程序入口
  12. *        形    參:無
  13. *        返 回 值: 錯誤代碼(無需處理)
  14. *********************************************************************************************************
  15. */
  16. int main(void)
  17. {
  18.         uint8_t ucKeyCode;
  19.         uint8_t ucRefresh = 0;
  20.         uint8_t ucFifoMode;
  21.        
  22.         /*
  23.                 由于ST固件庫的啟動文件已經執行了CPU系統時鐘的初始化,所以不必再次重復配置系統時鐘。
  24.                 啟動文件配置了CPU主時鐘頻率、內部Flash訪問速度和可選的外部SRAM FSMC初始化。

  25.                 系統時鐘缺省配置為72MHz,如果需要更改,可以修改:
  26.                 \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
  27.                 中配置系統時鐘的宏。
  28.         */

  29.         bsp_Init();
  30.         PrintfLogo();                /* 打印例程Logo到串口1 */

  31.         ucFifoMode = 0;                 /* AD7606進入普通工作模式 */
  32.        
  33.         bsp_InitAD7606();        /* 配置AD7606所用的GPIO */

  34.         AD7606_SetOS(AD_OS_NO);                /* 無過采樣 */
  35.         AD7606_SetInputRange(0);        /* 0表示輸入量程為正負5V, 1表示正負10V */

  36.         bsp_StartAutoTimer(0, 500);        /* 啟動1個200ms的自動重裝的定時器 */
  37.         AD7606_StartConvst();                /* 啟動1次轉換 */
  38.         ucRefresh = 0;
  39.         while (1)
  40.         {
  41.                 CPU_IDLE();                /* 這個宏在bsp_timer.h 中定義,目前定義為空。用戶可以修改這個宏實現CPU休眠和喂狗 */

  42.                 if (ucRefresh == 1)
  43.                 {
  44.                         ucRefresh = 0;
  45.                        
  46.                         /* 打印ADC采樣結果 */
  47.                         printf("Range = %d, OS = %d, ", g_tAD7606.ucRange, g_tAD7606.ucOS);
  48.                         printf("CH1 = %6d, CH2 = %6d, CH3 = %6d, CH4 = %6d, ",
  49.                                 g_tAD7606.sNowAdc[0], g_tAD7606.sNowAdc[1], g_tAD7606.sNowAdc[2], g_tAD7606.sNowAdc[3]);
  50.                         printf("CH5 = %6d, CH6 = %6d, CH7 = %6d, CH8 = %6d\r",
  51.                                 g_tAD7606.sNowAdc[4], g_tAD7606.sNowAdc[5], g_tAD7606.sNowAdc[6], g_tAD7606.sNowAdc[7]);
  52.                 }               
  53.                
  54.                 if (ucFifoMode == 0)        /* AD7606 普通工作模式 */
  55.                 {
  56.                         if (bsp_CheckTimer(0))       
  57.                         {               
  58.                                 /* 每隔500ms 進來一次. 由軟件啟動轉換 */
  59.                                 AD7606_ReadNowAdc();                /* 讀取采樣結果 */
  60.                                 AD7606_StartConvst();                /* 啟動下次轉換 */
  61.                                
  62.                                 ucRefresh = 1;        /* 刷新顯示 */
  63.                         }
  64.                 }
  65.                 else
  66.                 {
  67.                         /*
  68.                                 在FIFO工作模式,bsp_AD7606自動進行采集,數據存儲在FIFO緩沖區。
  69.                                 結果可以通過下面的函數讀取:                       
  70.                                 uint8_t AD7606_ReadFifo(uint16_t *_usReadAdc)
  71.                        
  72.                                 你可以將數據保存到SD卡,或者保存到外部SRAM。

  73.                                 本例未對FIFO中的數據進行處理,進行打印當前最新的樣本值。
  74.                        
  75.                                 如果主程序不能及時讀取FIFO數據,那么 AD7606_FifoFull() 將返回真。
  76.                        
  77.                                 8通道200K采樣時,數據傳輸率 = 200 000 * 2 * 8 = 3.2MB/S                       
  78.                         */
  79.                        
  80.                         if (bsp_CheckTimer(0))       
  81.                         {
  82.                                 ucRefresh = 1;        /* 刷新顯示 */
  83.                         }
  84.                 }               

  85.                 /* 按鍵檢測由后臺systick中斷服務程序實現,我們只需要調用bsp_GetKey讀取鍵值即可。這個函數不會
  86.                 等待按鍵按下,這樣我們可以在while循環內做其他的事情 */
  87.                 ucKeyCode = bsp_GetKey();        /* 讀取鍵值, 無鍵按下時返回 KEY_NONE = 0 */
  88.                 if (ucKeyCode != KEY_NONE)
  89.                 {
  90.                         /*
  91.                                 對于按鍵彈起事件,缺省的bsp_button.c 僅檢測了TAMPER、WAKEUP、USER鍵、搖桿OK鍵的彈起事件
  92.                                 如果您的應用程序需要其它鍵(比如方向鍵)的彈起事件,您需要簡單修改一下bsp_button.c文件
  93.                         */
  94.                         switch (ucKeyCode)
  95.                         {
  96.                                 case KEY_DOWN_K1:                        /* K1鍵按下 切換量程 */
  97.                                         if (g_tAD7606.ucRange == 0)
  98.                                         {
  99.                                                 AD7606_SetInputRange(1);
  100.                                         }
  101.                                         else
  102.                                         {
  103.                                                 AD7606_SetInputRange(0);
  104.                                         }
  105.                                         ucRefresh = 1;
  106.                                         break;

  107.                                 case KEY_DOWN_K2:                        /* K2鍵按下 */
  108.                                         ucFifoMode = 1;                                         /* AD7606進入FIFO工作模式 */
  109.                                         printf("\r\nAD7606進入FIFO工作模式 (200KHz 8通道同步采集)...\r\n");
  110.                                         AD7606_StartRecord(200000);                /* 啟動200kHz采樣速率 */
  111.                                         break;

  112.                                 case KEY_DOWN_K3:                        /* K3鍵按下 */
  113.                                         AD7606_StopRecord();        /* 停止記錄 */                               
  114.                                         ucFifoMode = 0;                         /* AD7606進入普通工作模式 */                               
  115.                                         printf("\r\nAD7606進入普通工作模式(0.5秒定時采集)...\r\n");
  116.                                         break;

  117.                                 case JOY_DOWN_U:                        /* 搖桿UP鍵按下 */
  118.                                         if (g_tAD7606.ucOS < 6)
  119.                                         {
  120.                                                 g_tAD7606.ucOS++;
  121.                                         }
  122.                                         ucRefresh = 1;
  123.                                         break;

  124.                                 case JOY_DOWN_D:                        /* 搖桿DOWN鍵按下 */
  125.                                         if (g_tAD7606.ucOS > 0)
  126.                                         {
  127.                                                 g_tAD7606.ucOS--;
  128.                                         }
  129.                                         ucRefresh = 1;
  130.                                         break;

  131.                                 case JOY_DOWN_L:                        /* 搖桿LEFT鍵按下 */
  132.                                         break;

  133.                                 case JOY_DOWN_R:                        /* 搖桿RIGHT鍵按下 */
  134.                                         break;

  135.                                 case JOY_DOWN_OK:                        /* 搖桿OK鍵按下 */
  136.                                         break;

  137.                                 default:
  138.                                         /* 其他的鍵值不處理 */
  139.                                         break;
  140.                         }
  141.                 }
  142.         }
  143. }


  144. /*
  145. *********************************************************************************************************
  146. ……………………

  147. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
AD7606_FSMC FSMC例程(STM32F407).7z (1.91 MB, 下載次數: 62)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 不卡视频一区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 美女视频一区 | 久久综合久久自在自线精品自 | 日韩精品一区二区三区在线播放 | 亚洲一区二区视频 | 不卡一二三区 | 自拍偷拍亚洲视频 | 亚洲高清在线观看 | 午夜久久久 | 99成人精品 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久99久久99 | 激情五月综合 | 国产精品久久久久久久久久免费看 | 中文字幕在线免费观看 | 欧美成人精品欧美一级 | 午夜免费视频 | 成在线人视频免费视频 | 九九精品网 | 精品久久久久久亚洲精品 | 91亚洲国产成人久久精品网站 | 欧美精品在线一区二区三区 | 日韩在线不卡视频 | 免费国产一区 | 国产精品久久久久久久三级 | 91精品国产91久久久久久最新 | 五月激情综合 | 日韩中文一区 | 天天躁日日躁狠狠躁白人 | 在线观看成年视频 | 在线观看第一页 | 美女黄色在线观看 | 中文字幕日韩欧美 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 午夜爱爱毛片xxxx视频免费看 | 久久性 | 欧美日韩在线不卡 | 欧美在线视频a | 美女久久久久久久 |