久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1310|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于STM32單片機(jī)學(xué)習(xí)記錄與疑惑

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1028003 發(fā)表于 2022-5-20 21:12 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
STM32單片機(jī)學(xué)習(xí)中的一些疑惑與問題記錄

一、串口發(fā)送

  1、固件庫文件里面的 宏定義
#define USART_FLAG_CTS                       ((uint16_t)0x0200)
#define USART_FLAG_LBD                       ((uint16_t)0x0100)
#define USART_FLAG_TXE                       ((uint16_t)0x0080)
#define USART_FLAG_PE                        ((uint16_t)0x0001)
#define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \
                             ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \
                             ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \
                             ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \
                             ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE))

#define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFC9F) == 0x00) && ((FLAG) != (uint16_t)0x00))
#define IS_USART_PERIPH_FLAG(PERIPH, USART_FLAG) ((((*(uint32_t*)&(PERIPH)) != UART4_BASE) &&\
                                                  ((*(uint32_t*)&(PERIPH)) != UART5_BASE)) \
                                                  || ((USART_FLAG) != USART_FLAG_CTS))
#define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x0044AA21))
#define IS_USART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)
#define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)

                那種帶符號的是什么意思呢??????????????????

                這種符號是表示 它這個參數(shù)的取值可以是這個范圍之內(nèi)的 或者是說必須是這幾個中的




                2、利用串口發(fā)送數(shù)據(jù)時,發(fā)送數(shù)據(jù)的函數(shù)sendbyte

void Usart_SendByte(USART_TypeDef* pUSARTx, uint8_t data)
{
        USART_SendData(pUSARTx, data);
        while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );
}

/* 發(fā)送一個字節(jié) */ // 形參是usart幾 所以要用結(jié)構(gòu)體  傳輸八位的數(shù)據(jù)   
   //USART_FLAG_TC 是中斷標(biāo)志位,RESET是0,USART_GetFlagStatus函數(shù)獲取標(biāo)志位的狀態(tài)并返回。
當(dāng)標(biāo)志位為0,時,while停在此反復(fù)輪詢,直到標(biāo)志位為1  (因?yàn)閞eset宏定義的是0 如果flag位也等于0 while里的成立 就一直死循環(huán))


while( 1 ) { 代碼 }
意義:這里將會重復(fù)執(zhí)行{}中的代碼
用途:
1.單片機(jī)在不使用操作系統(tǒng)時,主程序一般都使用這種架構(gòu)
2.操作系統(tǒng)中的進(jìn)程,執(zhí)行任務(wù)時,有些也會使用這種架構(gòu)
3.{}中的代碼不停地檢測某個條件,當(dāng)條件符合時,跳出該循環(huán),繼續(xù)向下執(zhí)行
4.停留在此,等待中斷




                3、再利用串口發(fā)送數(shù)據(jù)時候(單片機(jī)向上位機(jī)發(fā)送)        

                void Usart_SendByte(USART_TypeDef* pUSARTx, uint8_t data)
{
        USART_SendData(pUSARTx, data);
        while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );
}

                這句代碼的意思就是 單片機(jī)通過軟件(程序里main函數(shù)調(diào)用函數(shù)里面的參數(shù)來控制串口向上位機(jī)發(fā)送數(shù)據(jù))
                而下一個實(shí)驗(yàn)則是串口接受,就是上位機(jī)通過串口助手向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)通過switch語句來判斷收到
        的字符串,并對齊進(jìn)行相應(yīng)的操作(調(diào)用編寫中斷服務(wù)函數(shù))。


        二、串口接收

                1、外部中斷源IRQ ST公司給出了每個外設(shè)(引腳)對應(yīng)的中斷源的宏定義 比如USART1、
                2、一般單片機(jī)內(nèi)部使用的都是TTL電平,當(dāng)有與外設(shè)相連接時,根據(jù)接口的不同會選擇不同的協(xié)議,USB就是一
                接口,當(dāng)其與單片機(jī)通訊時需要進(jìn)行usb轉(zhuǎn)串口電路(ch340驅(qū)動)

                3、
                        ch = getchar();
                這句代碼就是從鍵盤上輸入一個字符,
                         printf( "ch=%c\n",ch );
                這句代碼就是把收到的字符顯示在上位機(jī)上        


                4、但是我還存在一個疑問:
                為什么使用串口收發(fā)的時候沒有使用中斷呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:301191 發(fā)表于 2022-5-21 06:58 | 只看該作者
頂一下
回復(fù)

使用道具 舉報

板凳
ID:401564 發(fā)表于 2022-5-21 13:43 | 只看該作者
一,宏定義實(shí)際上就是對寄存器的操作,就跟8051寫代碼一樣,如果不理解,就自己嘗試操作一下寄存器就知道了
二,有規(guī)定說串口一定有用中斷嗎?串口中斷的使用取決于有沒有必要和個人喜好
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2022-5-21 16:29 | 只看該作者
你調(diào)用了別人的函數(shù),建議仔細(xì)讀通函數(shù)的說明。
再想一想如果是你寫這些函數(shù),你會如何處理呢,可以邊學(xué)邊對比,收獲大大的。
串口的收發(fā),如果不用中斷,效率是很差的!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品产国自在拍 | 久久99深爱久久99精品 | 久久com | 国产精品7777777 | 国产区久久 | 欧美一区二区在线免费观看 | 中文字幕亚洲欧美日韩在线不卡 | 久久另类视频 | 色婷婷精品 | 国产成人精品一区二区三区在线 | 成人av激情 | 色接久久| 成人在线精品视频 | 红色av社区 | 日韩国产高清在线观看 | 亚洲综合99| 欧美a区| 精品一区二区免费视频 | 91av视频在线观看 | 最新国产福利在线 | 日韩中文欧美 | 国产午夜精品视频 | 午夜视频免费在线观看 | 日韩高清成人 | 国产精品久久久久久久一区二区 | 亚洲国产精品一区 | 精品国产亚洲一区二区三区大结局 | 日韩欧美黄色 | 亚洲性视频在线 | h视频免费在线观看 | 91精品久久久久久久 | 成人不卡在线 | 天天干狠狠| 97偷拍视频 | 亚洲精品大片 | 精品国产一区一区二区三亚瑟 | 久久久精品天堂 | 激情视频一区 | 日韩欧美不卡 | 久久久精品 | 欧美激情精品久久久久久免费 |