娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

018_STM32程序移植之_串口接收中文

發(fā)布者:溫馨陽(yáng)光最新更新時(shí)間:2024-08-16 來(lái)源: cnblogs關(guān)鍵字:STM32  程序移植 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

(一)在平時(shí)數(shù)據(jù)傳輸中很少用到接收中文的情況,但是最近需要用到就花了半天時(shí)間來(lái)弄弄

(二)接收原理,從現(xiàn)在接收情況分析:一個(gè)中文占兩個(gè)數(shù)據(jù)的空間,也就是兩個(gè)十六進(jìn)制可以轉(zhuǎn)化成為一個(gè)中文

(三)示例情況,用Hex Editor來(lái)看看中文 “你好”,可以看到四個(gè)十六進(jìn)制數(shù)據(jù):0xc4,0xe3,0xba,0xc3

(四)我們的目的還是單片機(jī)通過(guò)串口來(lái)進(jìn)行數(shù)據(jù)的接收,用CH340短接T和R看看發(fā)送“你好”也是會(huì)接收到十六進(jìn)制0xc4,0xe3,0xba,0xc3

(五)從上面兩點(diǎn)來(lái)看,一個(gè)中文占據(jù)兩個(gè)數(shù)據(jù),也就是說(shuō)當(dāng)我們發(fā)送“你好”給單片機(jī)時(shí)候?qū)嶋H中斷了四次,接收到的數(shù)據(jù)分別為0xc4,0xe3,0xba,0xc3


那么我們就可以通過(guò)接收到的數(shù)據(jù)來(lái)將數(shù)據(jù)轉(zhuǎn)化成為中文了,搜索GB2312表可以知道對(duì)應(yīng)的“你” = 0xe3c4;;  '好' = 0xc3ba


也就是兩位對(duì)應(yīng)一個(gè)中文嘛,那么如何將0xc4,0xe3合成0xe3c4;;將0xba,0xc3合成0xc3ba,然后將數(shù)據(jù)轉(zhuǎn)化成為字符形式就可使轉(zhuǎn)化成為中文了


(六)通過(guò)C語(yǔ)言的方法來(lái)進(jìn)行上面四個(gè)數(shù)據(jù)轉(zhuǎn)化成為中文,我用的是VS中的C++來(lái)編譯的,哪里都可以定義數(shù)組那些,如果出錯(cuò)請(qǐng)自行修改將定義放到前面來(lái)。


 1 #include

 2 #include

 3 using namespace std;

 4 char *Chinese(int table[],char length,char str[]);        /*將數(shù)據(jù)放進(jìn)去得到字符出來(lái)*/

 5 int convert_data(int table[2]);

 6 void main(void)

 7 {

 8     /*GB2312,你的代碼是0xe3c4,好的代碼是0xc3ba,具體的可以使用軟件Hex Editor來(lái)看看*/

 9     int test1[] = {0xe3c4};    /*你*/

10     printf('%srn',test1);

11     int test2[] = {0xc3ba};    /*好*/

12     printf('%srn',test2);

13 

14     /*單片機(jī)發(fā)送或者接收到“你好”,會(huì)得到下面四個(gè)數(shù)據(jù),將下面四個(gè)數(shù)據(jù)轉(zhuǎn)換成中文“你好”*/

15     int table[4] = {0xc4,0xe3,0xba,0xc3};

16     char str[100];

17                   /*輸入數(shù)組  長(zhǎng)度  返回保存地址*/

18     char *str4 = Chinese(table,4,str);

19     printf('%srn',str4);

20 }

21 

22 int convert_data(int table[2])        /*接收的兩個(gè)數(shù)據(jù)轉(zhuǎn)換成為一個(gè)數(shù)據(jù)*/

23 {

24     return (table[1] << 8)|table[0];

25 }

26 

27 char *Chinese(int table[],char length,char str[])        /*將數(shù)據(jù)放進(jìn)去得到字符出來(lái)*/

28 {

29     int i = 0;

30     int data1[1];

31     char data2[100];

32     data1[0] = (table[i + 1] << 8)|table[i];            

33     sprintf(data2,'%s',data1);

34     strcpy(str,data2);                                /*先取第一個(gè)中文先*/

35     for(i = 2;i < length; i = i + 2)

36     {

37         data1[0] = (table[i + 1] << 8)|table[i];    /*將0xc4,0xe3弄成0xe3c4,將0xba,0xc3換成0xc3ba*/

38         sprintf(data2,'%s',data1);

39         strcat(str,data2);

40     }

41 

42     return str;

43 }


編譯運(yùn)行的結(jié)果

 

(七)STM32串口接收中文

(1)資料下載:https://download.csdn.net/download/xiaoguoge11/10804315

(2)視頻演示:https://v.qq.com/x/page/g0800sirmx3.html


關(guān)鍵字:STM32  程序移植 引用地址:018_STM32程序移植之_串口接收中文

上一篇:021_STM32程序移植之_ESP8266連接onenet
下一篇:017_STM32程序移植之_AS608指紋模塊

推薦閱讀最新更新時(shí)間:2025-04-23 17:38

STM32開(kāi)發(fā)筆記34:USB CDC驅(qū)動(dòng)程序的詳細(xì)移植過(guò)程
單片機(jī)型號(hào):STM32F401 本文詳細(xì)介紹USB CDC驅(qū)動(dòng)程序的移植過(guò)程。 1、按照STM32F4 開(kāi)發(fā)筆記8:解決USB CDC “該設(shè)備無(wú)法啟動(dòng)”問(wèn)題介紹的過(guò)程生成驅(qū)動(dòng)程序后,找到如下圖所示的文件加入到自己的項(xiàng)目工程中。 2、打開(kāi)usbd_cdc_if.c文件,可以看到其中有,如下4個(gè)函數(shù),其中Init、DeInit和Control函數(shù)都不需要改變,關(guān)鍵是Receive函數(shù)。 static int8_t CDC_Init_FS(void); static int8_t CDC_DeInit_FS(void); static int8_t CDC_Control_FS(uint8_t cm
[單片機(jī)]
<font color='red'>STM32</font>開(kāi)發(fā)筆記34:USB CDC驅(qū)動(dòng)<font color='red'>程序</font>的詳細(xì)<font color='red'>移植</font>過(guò)程
stm32之不定長(zhǎng)接收
正文 使用STM32CUBE_MAX配置工程,可以簡(jiǎn)化編程工作量,但是這樣我們會(huì)遇到一些麻煩,比如利用串口接收不知道長(zhǎng)度的數(shù)據(jù)的時(shí)候,我們可能會(huì)無(wú)從下手,前段時(shí)間看到他人程序中的串口不定長(zhǎng)接收,此次特意總結(jié),包括3類(lèi)芯片串口不定長(zhǎng)配置。 STM32F103ZET6 配置工程: 選擇USART1,配置波特率為115200,并開(kāi)啟串口中斷,DMA中斷 配置程序 在配置工程后,我們需要在工程中printf重定向函數(shù)fputc()和重寫(xiě)串口接收函數(shù) UsartReceive_IDLE()代碼如下: // 在頭文件中定義結(jié)構(gòu)體 #define RX_LEN 1024 typedef struct { ui
[單片機(jī)]
<font color='red'>stm32</font>之不定長(zhǎng)<font color='red'>接收</font>
04 STM32外部中斷
1、綜述 ??(1)STM32F407的每個(gè)IO口都可以作為外部中斷的輸入口。 ??(2)STM32F407的中斷控制器支持22個(gè)外部中斷/事件請(qǐng)求。這也就是說(shuō),一共有22根外部中斷線(EXTI線)。而對(duì)于每個(gè)外部中斷線,可以獨(dú)立地配置觸發(fā)方式(上升沿、下降沿、雙邊沿觸發(fā))、觸發(fā)/屏蔽設(shè)置、發(fā)送的狀態(tài)位。 ??(3)這22根EXTI線中,有16根(0~15),是對(duì)應(yīng)著外部IO口的輸入中斷。但是,STM32F407擁有上百個(gè)IO口,而供IO口使用的中斷線只有16根。那么,中斷線如何與IO口對(duì)應(yīng)呢? ??(4)STM32做了這樣的設(shè)計(jì):同一組的IO最多有16個(gè),比如GPIOA.0~GPIOA.15、GPIOB.0~GPIOB.15等等
[單片機(jī)]
STM32的CAN過(guò)濾器-bxCAN的過(guò)濾器的4種工作模式以及使用方法總結(jié)
1. 前言 bxCAN是STM32系列最穩(wěn)定的IP核之一,無(wú)論有哪個(gè)新型號(hào)出來(lái),這個(gè)IP核基本未變,可見(jiàn)這個(gè)IP核的設(shè)計(jì)是相當(dāng)成熟的。本文所講述的內(nèi)容屬于這個(gè)IP核的一部分,掌握了本文所講內(nèi)容,就可以很方便地適用于所有STM32系列中包含bxCAN外設(shè)的型號(hào)。有關(guān)bxCAN的過(guò)濾器部分的內(nèi)容在參考手冊(cè)中往往看得“不甚明白“,本文就過(guò)濾器的4種工作模式進(jìn)行詳細(xì)講解并使用具體的代碼進(jìn)行演示,這些代碼都進(jìn)行過(guò)實(shí)測(cè)驗(yàn)證通過(guò)的,希望能給讀者對(duì)于bxCAN過(guò)濾器有一個(gè)清晰的理解。 2. 準(zhǔn)備工作 2.1. 為什么要過(guò)濾器? 在這里,我們可以將CAN總線看成一個(gè)廣播消息通道,上面?zhèn)鬏斨鞣N類(lèi)型的消息,好比報(bào)紙,有體育新聞,財(cái)經(jīng)新聞,政治新
[單片機(jī)]
stm32的adc使用(借鑒)
STM32F407_ADC查詢模式配置介紹 1.ADC對(duì)應(yīng)管腳介紹 |---管腳------對(duì)應(yīng)ADC----||---管腳------對(duì)應(yīng)ADC----| | PA0 --- ADC123_IN0 || PA1 --- ADC123_IN1 | | PA2 --- ADC123_IN2 || PA3 --- ADC123_IN3 | | PA4 --- ADC12_IN4 || PA5 --- ADC12_IN5 | | PA6 --- ADC12_IN6 || PA7 --- ADC12_IN7 | | PB0 --- ADC12_IN8 || PB1 --- ADC12_IN9 | | PC4 --- ADC12_
[單片機(jī)]
STM32之如何封裝自己的lib庫(kù)
似乎stm32剛開(kāi)始出來(lái)的時(shí)候就是用的l.ib庫(kù),后來(lái)就開(kāi)源了。 網(wǎng)上看了一些網(wǎng)友做的lib庫(kù),自己也弄了一下,其實(shí)也挺簡(jiǎn)單。 以下封裝lib庫(kù)都是基于stm32的3.0固件庫(kù) 1、打開(kāi)一個(gè)工程,將除固件庫(kù)以外的其他文件刪掉,如下: 2、在option下進(jìn)行設(shè)置,如下: 來(lái)個(gè)特寫(xiě): 3、將編譯好的lib庫(kù)拷貝到另外一個(gè)工程,添加進(jìn)去,并將工程下庫(kù)的c文件全部刪除(h文件必須保留) 4、編譯,如下: 注意,只需將stm32_lib_30.lib文件add進(jìn)去就可以了,沒(méi)必要在主文件里面include之類(lèi)的。 否則編譯的時(shí)候就會(huì)出錯(cuò)(重復(fù)包含),如下:
[單片機(jī)]
<font color='red'>STM32</font>之如何封裝自己的lib庫(kù)
STM32時(shí)鐘問(wèn)題(重點(diǎn))
STM32上電默認(rèn)時(shí)鐘內(nèi)部8MHZ,經(jīng)過(guò)庫(kù)函數(shù)SystemInit的初始化,設(shè)置成啟用外部晶振模式,并設(shè)為系統(tǒng)時(shí)鐘為PLL倍頻后的時(shí)鐘:72MHZ. * SYSCLK 72MHz * AHB 72MHz * PCLK1 36MHz * PCLK2 72MHz * PLL 72MHz 但是用戶可以自己選擇使用不同時(shí)鐘,下面給出了幾個(gè)函數(shù)。 可以配置成內(nèi)部時(shí)鐘或者外部時(shí)鐘。 /* * 寄存器的方式設(shè)置系統(tǒng)時(shí)鐘: * 輸入PLL倍頻因子,輸入PLL的倍頻值2—16倍頻(注意:不同的芯片有不同的倍頻因子) * HCLK = PLLCLK=SYSCLK=P2CLK=P1CLK*2=ADCCLK*2=TIMCLK=U
[單片機(jī)]
1、STM32學(xué)習(xí)筆記——系統(tǒng)時(shí)鐘初始化函數(shù)
STM32有三種不同的時(shí)鐘源可被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘(SYSCLK): 1:HSI振蕩器時(shí)鐘(內(nèi)部時(shí)鐘) 2:HSE振蕩器時(shí)鐘 (外部時(shí)鐘,即晶振所提供) 3:PLL時(shí)鐘(鎖相環(huán)時(shí)鐘) 這些設(shè)備有以下2種二級(jí)時(shí)鐘源: (1)40kHz低速內(nèi)部RC,可以用于驅(qū)動(dòng)獨(dú)立看門(mén)狗和通過(guò)程序選擇驅(qū)動(dòng)RTC。RTC用于從停機(jī)/待機(jī)模式下自動(dòng)喚醒系統(tǒng)。 (2)32.768kHz低速外部晶體也可用來(lái)通過(guò)程序選擇驅(qū)動(dòng)RTC(RTCCLK)。 當(dāng)不被使用時(shí),任一個(gè)時(shí)鐘源都可被獨(dú)立地啟動(dòng)或關(guān)閉,由此優(yōu)化系統(tǒng)功耗。 1:常用配置如下 使用HSE作為PLL的輸入源,將PLL的輸出配置為72MHZ,然后將PLL作為系統(tǒng)時(shí)鐘,最后將其他時(shí)鐘配置為
[單片機(jī)]
1、<font color='red'>STM32</font>學(xué)習(xí)筆記——系統(tǒng)時(shí)鐘初始化函數(shù)
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 苏尼特左旗| 康马县| 蒙自县| 海兴县| 丰台区| 竹山县| 大足县| 朝阳市| 谢通门县| 五河县| 葫芦岛市| 广汉市| 太原市| 罗山县| 平安县| 高淳县| 彭山县| 任丘市| 克什克腾旗| 荔波县| 盐山县| 栾城县| 邹城市| 临城县| 突泉县| 阿尔山市| 营山县| 兴山县| 鹤岗市| 清涧县| 乌兰浩特市| 凌源市| 长寿区| 无极县| 香港| 旌德县| 玉田县| 丰宁| 万宁市| 常德市| 巨鹿县|