USART串列埠驅動SIM800L或者ESP8266

2021-10-05 08:07:16 字數 1972 閱讀 9454

最近要驅動了sim800l發現自己用的程式好亂,今天寫個死的

#include

"usart.h"

#include

"stdio.h"

#include

"string.h"

#include

"delay.h"

/***@function:把串列埠接收到的資料都存在usart_rx_buf中,把它定義成為全域性變數以供使用

* 另外,接收完成之後,usart1_rx_sta的第15位還是1的狀態,使用完資料記得清零

* 不然無法進行第二次接收

*//**用庫函式配置優先順序,最近喜歡庫函式和暫存器兩種混著用

nvic_inittypedef nvic_initstructure;

nvic_initstructure.nvic_irqchannel = usart1_irqn;

nvic_initstructure.nvic_irqchannelpreemptionpriority=3 ;//搶占優先順序3

nvic_initstructure.nvic_irqchannelsubpriority = 3; //子優先順序3

nvic_initstructure.nvic_irqchannelcmd = enable; //irq通道使能

nvic_init(&nvic_initstructure); //根據指定的引數初始化vic暫存器

*/u8 usart1_rx_buf[usart1_receive_len]

;//乙個位元組長度型別的陣列

u16 usart1_rx_sta=0;

//接收狀態標記

void

genralusart_init

(int pclk2,

int bound)

/*通過串列埠傳送乙個字串*/

void

sendstrtousart1

(u8* str)

}/*檢視usart接收的資料是否含有自己的字串*/

u8*usart_check_cmd

(u8* str)

return

(u8*

)rstr;

}/**

*@par:cmd:傳送的命令

* ack:期望的響應

* waittime:超時時間,n*10ms

*@ret:0成功 1失敗

*/u8 usart_send_cmd

(u8* cmd,u8* ack,u16 waittime)

//接收到資料後清除狀態位

usart1_rx_sta=0;

}if(waittime==0)

return1;

//到時間未得到響應}}

return0;

}/**

*@function:一次中斷處理乙個位元組資料

*@attention:0x0d:/r 0x0a:/n

*/void

usart1_irqhandler

(void

)else

//還沒收到/r}}

}}/************************printf()函式*************************************/

struct __file

;///* file is typedef』 d in stdio.h. */

file __stdout;

//重定向fputc函式

//printf的輸出,指向fputc,由fputc輸出到串列埠

//這裡使用串列埠1(usart1)輸出printf資訊

intfputc

(int ch, file *f)

/************************printf()函式*************************************/

USART串列埠驅動SIM800L或者ESP8266

最近要驅動了sim800l發現自己用的程式好亂,今天寫個死的 include usart.h include stdio.h include string.h include delay.h function 把串列埠接收到的資料都存在usart rx buf中,把它定義成為全域性變數以供使用 另外...

usart串列埠使用

stm32串列埠使用 1 printf函式呼叫 iar的option設定中將printf庫開啟再編寫printf重定向到usartn的函式 int fputc int ch,file f return ch 使用usb轉ttl直接連線mcu與計算機即可。除ttl外,rs232與rs485都可作為串列...

USART 串列埠通訊

現在我使用串列埠一般都是列印除錯資訊或者藍芽通訊 只會用到tx和rx,不需要用到時鐘訊號線,所以是非同步半雙工 如果想要操作暫存器,那就要看功能框圖了 1.tx傳送資料引腳 rx接受資料引腳,所以要把引腳配置為串列埠復用引腳 每個串列埠對應的引腳都不一樣,這樣檢視手冊 2.傳送資料暫存器和接收資料暫...