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

歷史上的今天

今天是:2025年05月31日(星期六)

2019年05月31日 | HAL庫教程5:串口數據發送

發布者:溫暖陽光 來源: eefocus關鍵字:HAL庫  串口  數據發送 手機看文章 掃描二維碼
隨時隨地手機看文章

使用CubeMX配置串口1

配置引腳

??我的板子上使用插針引出了串口1,串口1連接PA8與PA9。

在這里插入圖片描述
在這里插入圖片描述


配置串口通信參數

??使能串口1,并配置為同步模式,波特率為115200,模式8N1。


在這里插入圖片描述

使能串口中斷


在這里插入圖片描述

查看生成的代碼

??引腳與中斷的初始化在stm32f4xx_hal_msp.c

在這里插入圖片描述

??而通信用到的參數,如波特率校驗方式等初始化在main.c。

在這里插入圖片描述

??同樣是串口初始化的代碼,為什么要分開寫?

??可能是分層思想,換板子的話,只用修改引腳與中斷的函數,用戶函數不用修改。比如用戶關心波特率,不用關心引腳。


按鍵控制串口發送代碼編寫

??通過串口打印按鍵的信息。


//main.c

int main(void)

{

  /* USER CODE BEGIN 2 */

  u8 UART_BUF[12] = "you press A!";

  u8 key;

  /* USER CODE END 2 */


  while (1)

  {

    key = KEY_Scan(0);

    switch(key)

    {

      case KEY_A_PRES:  UART_BUF[10] = 'A'; break;

      case KEY_B_PRES:  UART_BUF[10] = 'B'; break;

      case KEY_C_PRES:  UART_BUF[10] = 'C'; break;

      case KEY_D_PRES:  UART_BUF[10] = 'D'; break;

      default: break;     

    }

    if(key)

    {

      LED1 = !LED1;

      HAL_UART_Transmit(&huart1,UART_BUF,12,0xffff);   

    }

    /* USER CODE END WHILE */


  }

}


??HAL_UART_Transmit是HAL庫提供的串口發送函數。在HAL庫的手冊中,或者在代碼中跳轉到函數可以找到函數的說明信息。

在這里插入圖片描述

??根據說明,這個發送函數是阻塞式的。參數Timeout是超時時間,代表某次執行函數,最多占用串口的時間,單位是毫秒。簡單來說,在本次數據發送完之前,不能發送別的數據。所以,調用函數的時候要指明參數,本次發送占用多長時間,在此期間,由于串口資源被獨占,不能成功調用發送函數。如果在規定的時間內,數據發送完畢,那就釋放占用的串口資源;如果到了時間,即便數據還沒有發送完畢,(比如數據量很大),仍需要歸還串口資源的控制權,讓別人來用。

??在正確連接硬件,并配置串口助手以后,可以看到按鍵信息如下,說明串口數據發送成功。

在這里插入圖片描述

??需要說明的是,HAL庫提供的發送函數不止一個,還有中斷方式和DMA方式,這是這個函數用法最簡單。


重映射Printf功能

??在剛剛的例子中,需要把字符裝填到數組中,再通過數組來發送數據,比較麻煩,能否直接打印字符串?可以通過重映射C語言中的printf函數來實現。

??建立一個UART.c文件,添加到工程中。輸入以下代碼:


#include "stdio.h"

#include "main.h"


#ifdef __GNUC_

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif


//重映射printf的功能

PUTCHAR_PROTOTYPE

{

  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

 

  return ch;

}



??注意在適當的地方要有huart1的外部聲明。我寫在了main.h中

extern UART_HandleTypeDef huart1;

??然后在主函數中可以調用printf。


//main() while(1)

    if(key)

    {

      LED1 = !LED1;

      printf("return value is %d! rn",key);

      HAL_UART_Transmit(&huart1,UART_BUF,12,0xffff);    //發送接收到的數據

    }


在這里插入圖片描述


引腳復用與功能重映射

??如果在STM32CubeMX中將PB6設置為串口功能,可以發現PA9變為了普通引腳。

在這里插入圖片描述

??這說明PA9和PB6都可以作為串口1的TX引腳,但不能同時用。引腳有點像外設的出口,外設可以從前門出,也可以從后門出,但不能同時從前門和后門出去。

??引腳的功能不止一個,我們可以稱之為引腳的復用;比如既可以作為普通的IO,用于操作LED或按鍵,又可以用作串口。

??某個外設不但可以連接到引腳x,也可以用到引腳y,我們稱之為重映射。STM32單片機的功能比較強大,有很多外設。外設默認對應某個引腳,可以通過重映射的方法把一個外設映射到其它的引腳上,來充分利用片內資源。

??詳細的引腳重映射情況可以查看數據手冊表格9。



關鍵字:HAL庫  串口  數據發送 引用地址:HAL庫教程5:串口數據發送

上一篇:HAL庫教程6:串口數據接收
下一篇:HAL庫教程4:外部中斷

推薦閱讀

大陸LED晶粒廠持續擴增產能,2018年LED產業供過于求問題成為關注焦點,盡管近期LED價格跌幅呈現緩和,但更令業界擔憂的是第2季已過一半,全球LED市場仍未盼到春燕的佳音,終端客戶不愿下長單,迫使LED市場新一波的跌價壓力正蠢蠢欲動,倘若第3季旺季依然不旺,LED晶粒減產恐將迫在眉睫,否則將難以避免價格破盤危機,業界紛在觀望誰會率先啟動減產或殺價。...
英飛凌科技股份公司針對移動設備市場開發出一款卓越的3D圖像傳感器解決方案,即REAL3? IRS2381C。如今,這款3D飛行時間(ToF)單芯片解決方案被嵌入式視覺聯盟(Embedded Vision Alliance)評為“傳感器”組別的“年度最佳產品”。該獎項旨在表彰企業為推動新一代計算機視覺技術在諸多行業的應用落地而在先進技術、服務和產品方面的所取得創新成果與顯...
在科幻電影中,機器人幫助太空人工作將變成現實。日本機器人新創公司Gitai正研發一項新技術,未來可將遠程臨場(lepresence)仿真機器人送至太空,代替太空人處理艱難任務,先前該公司與日本宇宙航空研究開發機構(JAXA)合作,對機器人的實用性進行研究。 據報導,送太空人執行任務既危險又昂貴,若能遙控半自動機器人代替這項工作,宇宙航空機構預估將節...
5月29日,納思達發布公告稱,公司于5月28日收到中國證監會出具的《中國證監會行政許可申請受理單》(受理序號:211170)。5月27日,中國證監會對公司提交的《上市公司發行股份購買資產核準》行政許可申請材料進行了受理(發行股份及支付現金購買珠海奔圖電子有限公司100%股權并募集配套資金暨關聯交易的事項),認為該申請材料齊全,符合法定形式。不過,...

史海拾趣

問答坊 | AI 解惑

DSP與PC間高速串口通信的實現

利用UART解決DSP與PC機間通信時速率匹配問題,并給出了具體實現電路。     關鍵詞:DSP UART 串行通信 FIFO DSP是一種專門用來實現信號處理算法的微處理器芯片,主要優點有:硬件乘法器,哈佛總線結構,多種尋址方式,零耗循環 ...…

查看全部問答∨

東瓜的關于貨車用TPMS中RF方案的一點原創 (5)

東瓜的關于貨車用TPMS中RF方案的一點原創 (5)…

查看全部問答∨

用DSP產生的FSK調制信號發射

本帖最后由 paulhyde 于 2014-9-15 09:23 編輯 我產生的調制信號頻率150K,在不混頻的情況下可以直接通過功率放大器進行電感耦合嗎???兩個電感線圈的距離為5CM 具體功率放大器怎樣設計???  …

查看全部問答∨

產品使用報告格式

如題,哪位大俠有產品使用報告的格式呀??借來用用…

查看全部問答∨

探究CDC類的方法ExtTextOut 中的一個參數

virtual BOOL ExtTextOut ( int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths ); 想請教一下參數nOptions是否有效?本人通過測試,覺得ETO-CLIPPED、ETO-OPAQUE、NULL三者之間沒有 ...…

查看全部問答∨

VC++關于directshow圖像旋轉90度輸出花屏的問題

VC++關于directshow圖像旋轉90度輸出花屏的問題 我在transfilter對圖像做了一個90度的旋轉,再傳給第三個filter,發現圖像是花屏,解析度為176x144 如果解析度為高,寬相等就是正常的(如:240x240) 請問是什么原因?…

查看全部問答∨

求vxworks的ospf源碼 ?

求vxworks的ospf源碼,哪位大俠有?請給一份,先謝了! jorsen_gong@hotmai.com …

查看全部問答∨

急救 !!!!!!!!!!!!萬里求救!傳感器 單片機LED顯示設計電路圖

通過485 通信到485接口接收數據然后用(單片機)LED顯示     氣體濃度在0-0.5%是綠燈亮   0.5%-1%黃燈亮 蜂鳴器響且響的頻率慢       >=1%紅燈亮 蜂鳴器響且響的頻率快     用AT89c2051做 ...…

查看全部問答∨

招驅動工程師

崗位名稱:驅動工程師 崗位要求: 1.電子、通信、計算機、自控類相關專業本科以上學歷; 2.1年以上嵌入式產品開發經驗,熟悉各種常用的外圍擴展芯片的驅動。 比如SCI,SPI,I2C總線,smartcard,tuner。 3.精通C語言、匯編,有嵌入式系統和實時 ...…

查看全部問答∨

香版!STM8S208的BEEP功能是不是不能用?

我問ST工程師的郵件:~~:    你好!    我需要用到BEEP功能,可是設定寄存器后跑程序,發現BEEP寄存器并沒有改變.OPTION里面我有把PD4設成BEEP功能,OPTION里的PRSC設成(16MHZ TO 128KHZ P ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 静海县| 灌南县| 璧山县| 河间市| 包头市| 曲阳县| 镇沅| 偏关县| 罗甸县| 浮梁县| 和平区| 炉霍县| 虹口区| 炉霍县| 涿鹿县| 蓬莱市| 若羌县| 浠水县| 永泰县| 建水县| 阜城县| 平山县| 彩票| 马关县| 象州县| 长治市| 灌云县| 肇庆市| 陆河县| 阿拉尔市| 尼木县| 健康| 孝义市| 竹山县| 安岳县| 迁西县| 游戏| 曲沃县| 泽州县| 二连浩特市| 丹凤县|