




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
STM8單片機實現藍牙串口通信系統的設計最近在淘寶逛的時候發現了一款單片機,STM8。相比之前一直使用的也是8位的AVR相比,感覺STM8更為強大,芯片特點如下:內核:具有3級流水線的哈佛結構、擴展指令集程序存儲器:8K字節Flash;RAM:1K字節數據存儲器:640字節真正的數據EEPROM;可達30萬次擦寫更重要的一點就是STM8系列若使用庫編程的話,可以方便的不同芯片的程序移植。甚至可以方便的移植到STM32上面,大大減輕了更新硬件的重寫程序的工作量。ADC0832為8位分辨率A/D轉換芯片,其最高分辨可達256級,可以適應一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉換時間僅為32μS,據有雙數據輸出可作為數據校驗,以減少數據誤差,轉換速度快且穩定性能強。獨立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過DI數據輸入端,可以輕易的實現通道功能的選擇。(簡述和圖片均來之百度百科)本文適合STM8控制ADC0832,程序是使用庫編程,編譯工具IAR。其實STM8也自帶ADC轉換模塊了。..。..本程序還包括藍牙串口通信,方便將得到數據從串口輸出,我是編寫了安卓上位機的app,方便在安卓上面顯示圖像。程序還是用了定時器TIM4,確保每次采樣的間隔大致相等,對之后的數據處理提供了基礎。先介紹核心mian.c文件,主要功能是初始化串口UART1,定時器TIMER4,還有一個發送16進制的函數。其中發送完數據再發送一個字符’U’作為一個數據的結束(你也可以自己定義)。這里說說為什么要選用16進制,而不是10進制,STM8速度有限,為了減少單指令操作,程序用了移位操作,這樣可得到16進制每位數值,在發送到安卓上位機,上位機運算速度快,再轉化成10進制,這樣可以資源合理分配。main.c程序:#include“stm8s.h”#include“stm8s_it.h”uint8_tHexTable[]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};uint8_ti=0;//串口UART1初始化voidInit_UART(void){//默認初始化UART1_DeInit();//設置波特率96008位數據1位停止位無校驗外部時鐘不可用模式接收發送UART1_Init((u32)9600,UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_NO,UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);//設置接收寄存器溢出中斷UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE);}//定時器TIM4初始化voidInit_Timer4(void){//1ms中斷一次TIM4_TimeBaseInit(TIM4_PRESCALER_128,124);/*ClearTIM4updateflag*/TIM4_ClearFlag(TIM4_FLAG_UPDATE);/*Enableupdateinterrupt*/TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE);TIM4_Cmd(ENABLE);}//發送字節voidSend(uint8_tdat){//檢查并等待發送寄存器是否為空while((UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));//發送字節UART1_SendData8(dat);}//發送16位16進制voidUART1_mysend16hex(u16dat){Send(HexTable[(dat》》12)&0x0f]);Send(HexTable[(dat》》8)&0x0f]);Send(HexTable[(dat》》4)&0x0f]);Send(HexTable[(dat)&0x0f]);}//發送8位16進制voidUART1_mysend8hex(uint8_tdat){Send(HexTable[(dat》》4)&0x0f]);Send(HexTable[(dat)&0x0f]);Send(‘U’);}voidmain(){//初始化Init_UART();Init_Timer4();//中斷開啟enableInterrupts();while(1){}}//這個必須加上不然會報錯估計是庫的要求#ifdefUSE_FULL_ASSERTvoidassert_failed(u8*file,u32line){while(1){}}#endif接下來說說中斷函數表stm8s_it.c其中只要選用兩個中斷函數就可以了:INTERRUPT_HANDLER(UART1_RX_IRQHandler,18)接收寄存器溢出中斷里面添加安卓上位機發送過來的數據的處理程序,我這里寫的是ADC0832通道選擇的判斷。INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler,23)定時器4計數器溢出中斷里面添加初始化ADC0832和ADC0832數據讀取并UART1發送到安卓上位機。stm8s_it.c程序:#include“stm8s_it.h”#include“ADC0832.h”externuint8_ti;uint8_tchannel=1;//接收寄存器溢出中斷INTERRUPT_HANDLER(UART1_RX_IRQHandler,18){/*Inordertodetectunexpectedeventsduringdevelopment,itisrecommendedtosetabreakpointonthefollowinginstruction.*///下面是我做的安卓上位機發送過來的數據判斷,這里可以改成自己想要的程序uint8_ttempData;tempData=UART1_ReceiveData8();if(tempData==‘A’){channel=0;}if(tempData==‘Z’){channel=1;}//清除UART1中斷標識符UART1_ClearITPendingBit(UART1_IT_RXNE);}//定時器4計數器溢出中斷INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler,23){/*Inordertodetectunexpectedeventsduringdevelopment,itisrecommendedtosetabreakpointonthefollowinginstruction.*///1*10m執行一次i++;if(i==10){//進行ADC數模轉換//初始化ADC芯片,寫入通道AD_init(channel);u8u8_adc1_value;//進行數據讀出u8_adc1_value=AD_read();//發送8位數據UART1_mysend8hex(u8_adc1_value);//清除UART1中斷標識符UART1_ClearITPendingBit(UART1_IT_RXNE);i=0;}TIM4_ClearITPendingBit(TIM4_IT_UPDATE);}這里說說ADC0832的操作函數:ADC0832.c程序包括初始化STM8的GPIO,初始化ADC0832和讀取ADC0832數據主要是DODI端口復用的問題,由于STM8端口作為輸入輸出,需要重新初始化GPIO,所以比一般51單片機的程序要復雜一點。最后讀取數據先是從高位讀出,再低位讀出,進行校驗,相同數值再輸出。附上時序圖ADC0832.c程序:/**********************************************程序名稱:ADC0832子程序作者:devinzhang91時間:2014.10.04**********************************************/#ifndefADC0832_H#defineADC0832_H#include“stm8s.h”//端口設置#defineCLK_GPIO_PORT(GPIOC)#defineCLK_GPIO_PINS(GPIO_PIN_3)#defineDI_GPIO_PORT(GPIOC)#defineDI_GPIO_PINS(GP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居民認領樹苗活動方案
- 岳陽電玩城活動方案
- 工會立冬活動方案
- 小學遺體捐獻活動方案
- 小學環境教育活動方案
- 小孩影樓活動方案
- 工程車買十送一活動方案
- 幫扶家居門店活動方案
- 市南區國慶活動方案
- 干部滑冰活動方案
- 2024年上海高中學業水平合格性考試歷史試卷真題(含答案)
- 2025年人教版七年級數學下冊期末測試卷
- 2025至2030年中國汽車輪轂軸承行業市場全景評估及發展趨勢研判報告
- 2025年《安全生產月》活動總結報告
- 2025年江蘇高考真題化學試題(解析版)
- 小學一年級數學下冊應用題100道
- 2024協警輔警考試公安基礎知識考試速記輔導資料
- 安徽省馬鞍山市2023-2024學年高一下學期期末教學質量監測化學試卷(含解析)
- 初三化學最后一課-主題班會【課件】
- 反詐騙(企業員工)講座培訓課件
- 中國強軍之路課件
評論
0/150
提交評論