串列埠傳送和接收訊息

2021-09-27 02:31:47 字數 2098 閱讀 3909

stm32f4開發板搭載乙個usb串列埠,2個rs232串列埠,部落格內容介紹usb串列埠和電腦通訊

步驟:1、串列埠和io口使能

rcc_apb2periphclockcmd(rcc_apb2periph_usart1,enable);

rcc_ahb1periphclockcmd(rcc_ahb1periph_gpioa,enable);

2、設定引腳復用功能

gpio_pinafconfig(gpioa,gpio_pinsource9,gpio_af_usart1);

gpio_pinafconfig(gpioa,gpio_pinsource10,gpio_af_usart1);

3、gpio初始化

gpio_initstru.gpio_mode=gpio_mode_af;

gpio_initstru.gpio_otype=gpio_otype_pp;

gpio_initstru.gpio_pin=gpio_pin_9|gpio_pin_10;

gpio_initstru.gpio_pupd=gpio_pupd_up;

gpio_initstru.gpio_speed=gpio_high_speed;

gpio_init(gpioa,&gpio_initstru);

4、串列埠初始化(設定波特率,字長,停止位,奇偶校驗位)

usart_inittypestru.usart_baudrate=bound;

usart_inittypestru.usart_hardwareflowcontrol=usart_hardwareflowcontrol_none;

usart_inittypestru.usart_mode=usart_mode_rx|usart_mode_tx;

usart_inittypestru.usart_parity=usart_parity_no;

usart_inittypestru.usart_stopbits=usart_stopbits_1;

usart_inittypestru.usart_wordlength=usart_wordlength_8b;

usart_init(usart1,&usart_inittypestru);

5、使能串列埠(若使用到中斷,則需開啟中斷並初始化nvic)

開啟中斷並初始化nvic

usart_itconfig(usart1,usart_it_rxne,enable);//開啟中斷  串列埠的接收中斷

nvic_inittypestru.nvic_irqchannel=usart1_irqn;

nvic_inittypestru.nvic_irqchannelcmd=enable;

nvic_inittypestru.nvic_irqchannelpreemptionpriority=2;//搶占優先順序

nvic_inittypestru.nvic_irqchannelsubpriority=2;//響應優先順序

nvic_init(&nvic_inittypestru);

//使能串列埠

usart_cmd(usart1,enable);

6、串列埠1的中斷函式

void usart1_irqhandler();//在檔案stm32 startup ***.s中,然後再重寫

通過usart_rx_sta作為狀態暫存器判斷是否接收到資料。每次接收乙個位元組的資料,判斷資料是否以回車換行結束(0x0d/0x0a),若是0x0d 0x0a結束則傳送完成,若未結束,則將資料儲存到usart_rx_buffer(200)中。

實現功能: 上位機控制led燈亮與滅,上位機傳送命令0,led1滅,傳送命令1,led1亮

int main()

printf("\r\n");

printf("接收資料的值1為:%d  ",usart_rx_buf[0]);

printf("接收資料的值2為:%d  ",usart_rx_buf[1]);

printf("接收資料的值3為:%d  ",usart_rx_buf[2]);

if(usart_rx_buf[0]=='0')

else if(usart_rx_buf[0]=='1')

for(i=0;i接下來實現:微控制器定時傳送資料到上位機功能

kafka 訊息傳送和接收

傳送 例項 public class kafkaproducerdemo extends thread override public void run else catch interruptedexception e catch executionexception e num try catc...

訊息的建立傳送和接收

在 作業系統 訊息部分的比較經典的問題之一就是 訊息的建立傳送和接收 對於該問題完成並不難,我們使用訊息呼叫msgget msgsnd msggrev msgctrl 編制長度為1k 的訊息的傳送和接收程式,從而完成我們的問題。在作業系統訊息部分的比較經典的問題之一就是 訊息的建立傳送和接收 對於該...

通過kafka傳送和接收訊息

生產者配置類 configuration enablekafka public class kafkaproducerconfig private string address value private string batchsize value private string linger pu...