在上一篇文章中我們介紹了IO口模擬串口數據的發送,這一篇文章我們介紹IO口模擬串口數據的發送。同樣的,我們沒有使用庫函數和中斷,我們使用簡單的定時來完成數據的接收。
1、IO口模擬串口接收數據的原理
同樣的,我們將要接收的數據認為是10位(實際上,我們在接收數據之前必須搞清楚我們將要接收的是什么,否則我們需要在模擬串口程序中添加其他代碼來進行檢測)。
同樣的,我們事先知道發送數據的波特率為:9600。
我選擇的是STM8S003F的PD3引腳作為模擬串口的接收引腳。
思路是這樣的,我們使用定時器定時,通過判斷是否是起始位(通過低電平判斷,因為沒有發送數據應該是高電平),得到起始位了以后,延時一個數據位發送的時間(我們將定時器的時間設置為一個數據位的發送時間),然后逐次判斷數據位的電位,8次延時以后,在通過最后一次延時,以此來接收完了一個字節。
用這種方法的優點是邏輯簡單,能夠清晰的認識到串口發送數據的過程,但是,由于我們檢驗數據是否正確用到的是我們上一篇文章中用到的發送數據的方法,因此在發送字符串的時候我們發現它將只能接收到奇數的字節,只能在接收單字節數據的時候能正常工作,也就是大部分情況無法使用。如果需要它是一個正常代碼中能用的全雙工模擬串口,需要使用到中斷,我【待修改】將在后面進行介紹。
注意:這篇文章實現的IO口模擬串口接收數據,只能實現單個字節的接收!
2、實現過程
2.1、一切從main()函數開始
同樣的,我們建立完工程后需要從main()函數開始,我們首先需要進行初始化的配置All_Config()【在UserApp.c中】,代碼如下:
//head file
#include "UserApp.h"
#include "IO.h"
#include "User.h"
#include "Time.h"
#include "Delay.h"
//初始化函數
void All_Config( void )
{
Clock_Config();
IO_Init();
TIM2_Init();
}
其中Clock_Config()【在UserApp.c中】為單片機時鐘配置函數,代碼如下:
//初始化時鐘 選擇內部16M晶振
void Clock_Config()
{
CLK->CKDIVR &= ~( BIT(4) | BIT(3) );
}
其中我們選擇的內部16M晶振,單片機默認的也是16M晶振但是會有8分頻,我們這里設置的是沒有分頻。
其中IO_Init()【在IO.c中】是對IO口的初始化,由于我們需要驗證接收的正確性,我們需要將接收到的數據發送到電腦串口程序,我們可以使用單片機自己的串口發送口,由于我能保證我自己上一篇文章的正確性,因此我直接在上一篇文章的基礎上進行開發。也就是我需要初始化PD2和PD3,代碼如下:
//head file
#include "IO.h"
#include "User.h"
void IO_Init()
{
//TXD:TXD位推挽輸出 PD2
UART_PORT->ODR |= UART_PIN_TX; //0000 0100
UART_PORT->DDR |= UART_PIN_TX; //0000 0100
UART_PORT->CR1 |= UART_PIN_TX; //0000 0100
UART_PORT->CR2 &= ~UART_PIN_TX; //0000 0100
//RXD:懸浮輸入 高電平 PD3
UART_PORT->IDR |= UART_PIN_RX; //0000 1000
UART_PORT->DDR &= ~UART_PIN_RX; //0000 1000
UART_PORT->CR1 &= ~UART_PIN_RX; //0000 1000
UART_PORT->CR2 &= ~UART_PIN_RX; //0000 1000
}
其中TIM2_Init()【在Time.c中】是定時器的初始化,
上一篇:【嵌入式開發】STM8S103F3P6單線半雙工串口通信
下一篇:stm8s103串口
推薦閱讀
史海拾趣
為了進一步提升公司的競爭力和影響力,ADMOS公司積極尋求與其他行業領導者的戰略合作。通過與芯片設計、封裝測試等領域的頂尖企業建立戰略合作關系,ADMOS得以共享資源、互通有無,共同推動電子行業的進步和發展。這種合作模式不僅加速了ADMOS公司的成長步伐,也為整個電子行業的繁榮做出了貢獻。
請注意,以上故事均為虛構,旨在展示一個可能的ADMOS公司發展歷程。實際情況可能有所不同,具體細節需參考ADMOS公司的官方資料和相關報道。
隨著全球經濟的不斷發展,亞洲市場逐漸成為通信行業的重要增長點。康普公司敏銳地捕捉到了這一機遇,于1997年在蘇州工業園區成立了康普通訊技術(中國)有限公司,這是康普在亞洲開設的第一家工廠。該工廠的成立不僅提高了康普在亞洲市場的生產效率,也為其進一步開拓亞洲市場提供了有力的支持。此后,康普在亞洲市場的業務逐漸擴大,為眾多國內大型項目提供了網絡解決方案。
隨著全球經濟的不斷發展,亞洲市場逐漸成為通信行業的重要增長點。康普公司敏銳地捕捉到了這一機遇,于1997年在蘇州工業園區成立了康普通訊技術(中國)有限公司,這是康普在亞洲開設的第一家工廠。該工廠的成立不僅提高了康普在亞洲市場的生產效率,也為其進一步開拓亞洲市場提供了有力的支持。此后,康普在亞洲市場的業務逐漸擴大,為眾多國內大型項目提供了網絡解決方案。
Califia Lighting深知品質是企業生存和發展的關鍵。因此,公司建立了嚴格的質量管理體系,從原材料采購到產品生產、檢驗、包裝等各個環節都進行嚴格把關。同時,公司還注重客戶服務和售后支持,及時解決客戶在使用過程中遇到的問題,贏得了客戶的信賴和好評。
在被美光收購后,ELPIDA的技術和人才得到了保留和傳承。美光利用ELPIDA的技術優勢和市場經驗,繼續推出了一系列高性能的DRAM產品。同時,ELPIDA也在新的領域進行探索和嘗試,如生物生產等。這些努力不僅為美光公司帶來了新的增長點,也為ELPIDA品牌注入了新的活力。
以上五個故事概述了ELPIDA公司在電子行業中的重要發展歷程。這些故事反映了公司在市場競爭中的起伏和挑戰,以及公司在技術和市場上的不斷探索和創新。
國半大師的經典巨著《Troubleshooting_Analog_Circuits》 本帖最后由 dontium 于 2015-1-23 11:34 編輯 國半大師的經典之作呃,詳細講了模擬電路的故障診斷。呵呵,我后來全部打印下來看了,國內翻譯的不太好,英文原著還是相當的不錯的撒,呵呵,分享下。 … 查看全部問答∨ |
|
正激式開關電源變壓器參數的計算 開關電源原理與設計(連載16) 1-6-3-2.正激式開關電源變壓器參數的計算 正激式開關電源變壓器參數的計算主要從這幾個方面來考慮。一個是變壓器初級線圈的匝數和伏秒容量,伏秒容量越大變壓器的勵磁電流就越小;另一個是變壓器初、次級線圈的匝數比,以及變壓器各個繞組的額定 ...… 查看全部問答∨ |
|
listview (ownerdraw)中背景圖片怎么能不平鋪? 我這邊設置的背景圖片,再拉動滾動條的時候,背景也滾動的,背景圖片是平鋪的? 有沒有辦法不平鋪,改成固定背景? 謝謝。… 查看全部問答∨ |
|
序列檢測器的邏輯功能描述:10010 的序列檢碼器,狀態轉移圖如下圖所示: 我我有一點不明白, 在狀態B的情況下要是輸入1的話,直接進入A狀態不行么?G狀態下如果輸入1的話也可以直接進入A狀態啊,我就是這樣做 ...… 查看全部問答∨ |
|
設計資源 培訓 開發板 精華推薦
- 有獎直播 | 德州儀器基于 Arm 的 AM62 處理器簡介
- 最后一周:免費獲取Pasternack《RF產品選型指南》2018 印刷版!
- 有獎直播|如何借助Mentor Xpedition AMS對汽車CAN總線進行仿真優化分析?
- 如何用3個關鍵步驟,來確保下一代設計安全性,深入解讀嵌入式設備DeepCover加密控制器,看視頻答題贏好禮!
- 好書共讀:《硬件設計指南:從器件認知到手機基帶設計》
- 【預約有禮】全球測量圈大咖直播:驗證5G核心網,確保最佳性能
- 中秋“國宴“ :拍攝板卡上的國產元器件,抽開心小禮品
- Keysight教你如何提高測試精度,答對問題還有禮品相送,速速參與!
- TI 培訓推薦有禮活動
- 【分享成長,10月有獎】EEWORLD優秀主題/回復第15期活動開始啦!!!