1、接收
默認(rèn)串口的數(shù)據(jù)格式為 一位起始位+8位數(shù)據(jù)位+停止位,由于起始位為低電平,停止位為高電平。因此,RX線要使能外部中斷,中斷方式為下降沿中斷。只需要在中斷程序中使能定時(shí)器,并且要在main函數(shù)之前對(duì)定時(shí)器進(jìn)行初始化,設(shè)置定時(shí)器的預(yù)裝值,這里設(shè)置的預(yù)裝值就是設(shè)置串口的波特率,另外還要使能定時(shí)器的更新中斷,在定時(shí)器的中斷處理程序中,按位接收串口發(fā)送過(guò)來(lái)的數(shù)據(jù)。當(dāng)接收到停止位時(shí),失能定時(shí)器,然后對(duì)定時(shí)器進(jìn)行清零處理
下面是外部中斷處理函數(shù):
INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3)
{
if(EXTI_GetExtIntSensitivity(EXTI_PORT_GPIOA)==EXTI_SENSITIVITY_FALL_LOW
&& emuart_struct.statu==EMUART_WAIT)
{
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT); //關(guān)閉PA.3中斷
emuart_struct.statu=EMUART_RECV;
TIM2_Cmd(ENABLE); //Delay(0X1FF); //啟動(dòng)定時(shí)器
}
}
2、發(fā)送
原理同接收一樣,在發(fā)送函數(shù)中使能定時(shí)器,并且將RX口線拉低。在定時(shí)器更新中斷處理函數(shù)中按位發(fā)送數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)送完畢后將RX線拉高,并且失能定時(shí)器,然后對(duì)定時(shí)器進(jìn)行清零處理。
下面是定時(shí)器中斷處理函數(shù):
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{
static unsigned char recvdata=0;
unsigned char bitemp=0;
unsigned char readbit;
if(TIM2_GetITStatus(TIM2_IT_UPDATE)==SET)
{
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
if(emuart_struct.statu==EMUART_RECV) //讀取數(shù)據(jù)
{
emuart_struct.bitRecved++;
if(emuart_struct.bitRecved>=1 && emuart_struct.bitRecved<=8)
{
if(GPIO_ReadInputPin(GPIOA, GPIO_PIN_3) == 0X08)
{
readbit=(unsigned char)(1<<(emuart_struct.bitRecved-1));
}
else
{
readbit=(unsigned char)(0<<(emuart_struct.bitRecved-1));
}
recvdata|=readbit;
}
else if(emuart_struct.bitRecved==9)
{
emuart_struct.bitRecved=0;
emuart_struct.recvData=recvdata;
emuart_struct.isRead=ISNOTREAD;
emuart_struct.statu=EMUART_WAIT;
recvdata=0;
TIM2_Cmd(DISABLE); //關(guān)閉定時(shí)器
TIM2->CNTRH=0;//TIM2->ARRH; //定時(shí)器清零
TIM2->CNTRL=0;//TIM2->ARRL;
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_IT); //打開(kāi)外部中斷
}
}
else if(emuart_struct.statu==EMUART_SEND) //發(fā)送數(shù)據(jù)
{
emuart_struct.bitSended++;
if(emuart_struct.bitSended>=1 && emuart_struct.bitSended<=8)
{
bitemp=(emuart_struct.sendData>>(emuart_struct.bitSended-1))&0x01;
if(bitemp==1)
{
GPIO_WriteHigh(GPIOB, GPIO_PIN_4);
}
else if(bitemp==0)
{
GPIO_WriteLow(GPIOB, GPIO_PIN_4);
}
}
else if(emuart_struct.bitSended==9) //發(fā)送或接收數(shù)據(jù)完畢
{
emuart_struct.bitSended=0;
GPIO_WriteHigh(GPIOB,GPIO_PIN_4);
emuart_struct.statu=EMUART_WAIT;
emuart_struct.isSend=ISEND;
TIM2_Cmd(DISABLE); //關(guān)閉定時(shí)器
TIM2->CNTRH=0; //定時(shí)器清零
TIM2->CNTRL=0;
}
}
}
}
上一篇:STM8S003軟件串口的實(shí)現(xiàn)
下一篇:iar for stm8 報(bào)錯(cuò)Error[Li005]: no definition for "assert_failed"解決方案
推薦閱讀
史海拾趣
和芯潤(rùn)德深知產(chǎn)品質(zhì)量對(duì)于企業(yè)發(fā)展的重要性。因此,公司建立了嚴(yán)格的質(zhì)量管理體系,從原材料采購(gòu)到生產(chǎn)過(guò)程的每一個(gè)環(huán)節(jié)都進(jìn)行嚴(yán)格把關(guān)。此外,公司還引進(jìn)了先進(jìn)的檢測(cè)設(shè)備和技術(shù)手段,確保產(chǎn)品的可靠性和穩(wěn)定性。這種對(duì)質(zhì)量的嚴(yán)格把控使和芯潤(rùn)德的產(chǎn)品在市場(chǎng)上贏得了良好的口碑。
在競(jìng)爭(zhēng)激烈的電子行業(yè)中,杜因特始終將創(chuàng)新作為公司發(fā)展的核心動(dòng)力。公司不斷投入大量資源進(jìn)行新產(chǎn)品的研發(fā)和技術(shù)創(chuàng)新,特別是在Super-Junction MOSFET和Super-Trench MOSFET等高端產(chǎn)品領(lǐng)域取得了顯著成果。這些創(chuàng)新產(chǎn)品不僅滿足了市場(chǎng)對(duì)高品質(zhì)MOSFET的日益增長(zhǎng)需求,還進(jìn)一步鞏固了杜因特在電子行業(yè)的技術(shù)領(lǐng)先地位。
在穩(wěn)步發(fā)展健身業(yè)務(wù)的同時(shí),Equinox還在不斷探索新的領(lǐng)域。例如,公司推出了精品酒店品牌Equinox Hotels,將健身與旅游相結(jié)合;同時(shí),Equinox還積極進(jìn)軍健康食品、健康科技等領(lǐng)域,以實(shí)現(xiàn)多元化的發(fā)展戰(zhàn)略。未來(lái),Equinox將繼續(xù)秉承“健康、活力、高品質(zhì)”的品牌理念,為全球消費(fèi)者提供更優(yōu)質(zhì)的服務(wù)和體驗(yàn)。
在市場(chǎng)競(jìng)爭(zhēng)日益激烈的今天,Dau Semiconductor Inc公司深知只有不斷創(chuàng)新和升級(jí)技術(shù),才能保持市場(chǎng)競(jìng)爭(zhēng)力。因此,公司不斷加大對(duì)研發(fā)的投入,引進(jìn)先進(jìn)的設(shè)備和人才,探索新的技術(shù)方向。近年來(lái),公司成功研發(fā)出了多款具有創(chuàng)新性的半導(dǎo)體芯片產(chǎn)品,如基于人工智能技術(shù)的智能芯片、基于物聯(lián)網(wǎng)技術(shù)的低功耗傳感器芯片等。這些產(chǎn)品的推出,不僅為公司帶來(lái)了更多的商業(yè)機(jī)會(huì),也為行業(yè)的發(fā)展注入了新的活力。
在編譯windows ce5.0的程序時(shí),字符集采用的是MBCS,但是在編譯的時(shí)候出現(xiàn)了一個(gè)錯(cuò)誤: 1>D:\\Program Files\\Microsoft Visual Studio 8\\VC\\ce\\atlmfc\\include\\afxv_w32.h(227) : fatal error C1083: Cannot open include file: \'mbctype ...… 查看全部問(wèn)答∨ |
我用CORTEX-M3內(nèi)核,用TIM1做捕獲中斷,TIM3做匹配更新中斷,但是發(fā)現(xiàn)TIM1的捕獲必須在TIM3匹配中斷禁止后才有用,有沒(méi)有人了解的… 查看全部問(wèn)答∨ |
wince上, 存儲(chǔ)內(nèi)存 <--> 程序內(nèi)存 如何理解? wince上, 控制面板->系統(tǒng)->內(nèi)存(系統(tǒng)屬性) wince上, 存儲(chǔ)內(nèi)存 <--> 程序內(nèi)存 如何理解? 我的程序運(yùn)行某個(gè)功能時(shí),存儲(chǔ)內(nèi)存越來(lái)越少,是什么原因? … 查看全部問(wèn)答∨ |
我很菜,現(xiàn)在要用到一個(gè)延時(shí)5S到30S可調(diào)的電路,用這個(gè)電路(附件),R1,R2用的是可調(diào)的電位器。可是只有積分的作用沒(méi)有起到延時(shí)的作用,望大家多多指點(diǎn)。 謝謝!… 查看全部問(wèn)答∨ |
緊急求助:正在找工作,兩家公司,一家做手機(jī)開(kāi)發(fā),一家電視開(kāi)發(fā)哪個(gè)工作更有前途? 目前正在找工作。 兩家公司,一家做手機(jī)開(kāi)發(fā)。一家做電視開(kāi)發(fā)。都給我了面試筆試通過(guò)的通知。兩家的實(shí)力相當(dāng)。 因?yàn)槲乙郧白龅密浖茈s,所以對(duì)嵌入式行業(yè)不了解。 希望大家?guī)臀曳治鱿拢? 手機(jī)開(kāi)發(fā)和電視開(kāi)發(fā)哪個(gè)行業(yè)更有前途? … 查看全部問(wèn)答∨ |
比如一個(gè)輸入 2007-10-21 ,另一個(gè)輸入 2008-11-12 如何計(jì)算這兩個(gè)input的差值是多少秒 精確到秒 謝謝… 查看全部問(wèn)答∨ |
請(qǐng)問(wèn)各位大蝦: 這兩天在PC機(jī)上做CF卡啟動(dòng),按照網(wǎng)上查的資料修改了相關(guān)文件后生成了bootrom和vxworks文件,啟動(dòng)行設(shè)置為 ata=0,0(0,0)target:/ata0/vxWorks h=10.21.110.16 e=10.21.110.30 u=TargetUser pw=vxworks 然后在DOS下vxsys C:(C為 ...… 查看全部問(wèn)答∨ |
探討下關(guān)于不等電位的MOS管驅(qū)動(dòng) 如圖,請(qǐng)大家一起他們探討下關(guān)于這種不等電位的MOS管驅(qū)動(dòng)有哪些辦法,不用專門芯片,謝謝 … 查看全部問(wèn)答∨ |
各位大蝦: 小弟最近在學(xué)習(xí)uc/os ii 在arm7 ADuC7026上的移植,想第一步實(shí)現(xiàn)操作系統(tǒng)下的簡(jiǎn)單控制,單任務(wù),比方說(shuō)LED閃爍控制,希望各位大牛門能幫忙指點(diǎn)一二,幫忙詳細(xì)講解一下整 ...… 查看全部問(wèn)答∨ |
今天真是悲慘的一天啊 最近想A8開(kāi)發(fā)板都想瘋了 公司沒(méi)法上網(wǎng),請(qǐng)朋友幫忙搶購(gòu) 結(jié)果呢,沒(méi)搶到,她不會(huì)操作..... 啊啊啊!我的A8啊 管理員啊,管理員… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 【下載】LAT1466 USB x Device HID Standalone的移植
- 【下載】LAT1488 STM32 USBxDevice MSC standalone移植示例
- 【下載】LAT1482 STM32G0單線串口通信幀錯(cuò)誤問(wèn)題解析
- 【下載】LAT1473 STM32C0 HAL庫(kù)的SPI 驅(qū)動(dòng)導(dǎo)致的Hardfault問(wèn)題分析
- 【下載】LAT1490 兩個(gè)STM32G0 I2C 通信異常的案例分析
- 【下載】LAT1470 SPI傳輸長(zhǎng)度超過(guò)1024時(shí)出現(xiàn)異常的問(wèn)題分析
- 英飛凌穩(wěn)居微控制器領(lǐng)域榜首,鞏固其在全球車用半導(dǎo)體市場(chǎng)的領(lǐng)導(dǎo)地位
- 迅為imx6ull開(kāi)發(fā)板使用c語(yǔ)言調(diào)用shell命令控制led燈
- 迅為IMX8MM開(kāi)發(fā)板Android編譯環(huán)境搭建
- 迅為IMX6ULL開(kāi)發(fā)板NFS服務(wù)器的使用
- 迅為ITOP4412開(kāi)發(fā)板Qt界面添加圖片
- 迅為IMX6開(kāi)發(fā)板OTA遠(yuǎn)程升級(jí)-SWUpdata概述和使用
- 迅為IMX6ULL開(kāi)發(fā)板NFS服務(wù)器的搭建
- 迅為IMX6開(kāi)發(fā)板Buildroot文件系統(tǒng)4G撥號(hào)上網(wǎng)工具測(cè)試
- 實(shí)驗(yàn)分享丨迅為IMX6ULL開(kāi)發(fā)板點(diǎn)亮第一個(gè)led燈
- OpenCV行人檢測(cè)--基于米爾全志T527開(kāi)發(fā)板
- 神經(jīng)技術(shù)的潛能:貿(mào)澤EIT系列探索技術(shù)與思維交會(huì)點(diǎn)的腦機(jī)接口
- TE Connectivity在推動(dòng)長(zhǎng)期可持續(xù)發(fā)展目標(biāo)方面取得顯著進(jìn)展
- 世索科攜一系列用于半導(dǎo)體制造的先進(jìn)材料亮相Semicon China 2025
- TITAN Haptics助力中國(guó)健康產(chǎn)業(yè)的革新
- 汽車線束布置的四大注意事項(xiàng)
- 什么原因?qū)е缕囉秃母吆秃桶l(fā)動(dòng)機(jī)轉(zhuǎn)速高
- 莫仕的電容式背光設(shè)計(jì)在汽車應(yīng)用的五大設(shè)計(jì)挑戰(zhàn)與方案
- 關(guān)于車載Ethernet降噪措施的必要性
- 學(xué)子專區(qū)論壇- ADALM2000實(shí)驗(yàn):脈寬調(diào)制
- 勞動(dòng)五月 曬“現(xiàn)場(chǎng)”,誰(shuí)是電子工作狂?
- MPS 新年福利|注冊(cè)即有機(jī)會(huì)贏取京東卡
- 2020 STM32全國(guó)研討會(huì)火熱報(bào)名中,新技術(shù)新方案等你收獲,還有好禮拿!
- 有獎(jiǎng)直播|TI 帶您領(lǐng)略互聯(lián)、高效的智能家居方案
- 有獎(jiǎng)直播報(bào)名:英飛凌智能電機(jī)驅(qū)動(dòng)方案
- 最能打的國(guó)產(chǎn)芯們
- 已結(jié)束【Microchip 安全解決方案系列在線研討會(huì)】
- 先到先得雙重有禮 成為體驗(yàn)FLUKE新品的先鋒者
- 西門子EDA直播:多板產(chǎn)品互聯(lián)規(guī)劃方案,為破局而來(lái)!
- 東芝重建成敗在中國(guó)?半導(dǎo)體存儲(chǔ)器業(yè)務(wù)是關(guān)鍵
- 英特爾提出“智能X效應(yīng)” 數(shù)據(jù)時(shí)代萬(wàn)物均為計(jì)算機(jī)
- 復(fù)旦大學(xué)科研團(tuán)隊(duì)開(kāi)創(chuàng)研發(fā)第三類存儲(chǔ)技術(shù)
- OPPO一次推兩款藍(lán)牙耳機(jī),計(jì)劃4月13日開(kāi)售
- 三星SK中國(guó)半導(dǎo)體工廠“無(wú)異常” 免遭中美貿(mào)易戰(zhàn)打擊
- 冷思考|智能鎖行業(yè)的2019年該怎么走?
- 蘋果專利:探索力感知織物手套,支持手勢(shì)控制輸入
- 十年千篇!人臉識(shí)別相關(guān)技術(shù)最全論文合輯
- 亞馬遜Fire TV的下一陣地:是電視還是汽車?
- 電視史上首臺(tái)5G+VR春晚來(lái)了:2月3日見(jiàn)
- ESP32經(jīng)驗(yàn)帖合集,學(xué)習(xí)ESP32的網(wǎng)友可以看看
- NIOSII中問(wèn)題
- 可以開(kāi)發(fā)一些簡(jiǎn)便的小工具,工具專欄,或者可以下載的EEWORLD助手什么的
- ADS8332不可以自動(dòng)觸發(fā)?
- 最新嵌入式開(kāi)發(fā)
- 【轉(zhuǎn)】是德示波器被破解的討論
- 電腦控制mpc014四軸外置運(yùn)動(dòng)控制卡例程
- 【視頻】Altera SoC Live Demo -- VxWorks by WindRiver
- 端午節(jié)相約一起免費(fèi)學(xué)習(xí)單片機(jī)ARM技術(shù)!
- RFP下載問(wèn)題