chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

軟件設(shè)計(jì)及串口相關(guān)函數(shù)介紹

瑞薩嵌入式小百科 ? 來(lái)源:瑞薩嵌入式小百科 ? 2025-10-27 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

18.5.2

軟件設(shè)計(jì)

18.5.2.1

新建工程

因?yàn)楸菊鹿?jié)的UART相關(guān)實(shí)驗(yàn)例程需要用到板子上的LED功能,因此我們可以直接以前面的“11_GPIO_LED”工程為基礎(chǔ)進(jìn)行修改。

對(duì)于e2studio開(kāi)發(fā)環(huán)境:拷貝一份我們之前的e2s工程模板“11_GPIO_LED”,然后將工程文件夾重命名為“19_UART_Receive_Send”,最后再將它導(dǎo)入到我們的e2studio工作空間中。

對(duì)于Keil開(kāi)發(fā)環(huán)境:拷貝一份我們之前的Keil工程模板“11_GPIO_LED”,然后將工程文件夾重命名為“19_UART_Receive_Send”,并進(jìn)入該文件夾里面雙擊Keil工程文件,打開(kāi)該工程。

工程新建好之后,在工程根目錄的“src”文件夾下面新建“debug_uart”文件夾,再進(jìn)入“debug_uart”文件夾里面新建源文件和頭文件:“bsp_debug_uart.c”和“bsp_debug_uart.h”。工程文件結(jié)構(gòu)如下。

列表1:文件結(jié)構(gòu)

左右滑動(dòng)查看完整內(nèi)容

19_UART_Receive_Send
├─ ......
└─src
├─ led
│ ├─ bsp_led.c
│ └─ bsp_led.h
├─ debug_uart
│ ├─ bsp_debug_uart.c
│ └─ bsp_debug_uart.h
└─ hal_entry.c

18.5.2.2

FSP配置

下面以啟明6M5開(kāi)發(fā)板為例,進(jìn)行FSP配置,另外兩塊開(kāi)發(fā)板的FSP配置過(guò)程與啟明6M5開(kāi)發(fā)板的配置過(guò)程基本上是一樣的。

首先打開(kāi)“19_UART_Receive_Send”項(xiàng)目的FSP 配置界面進(jìn)行配置。

在FSP配置界面里面點(diǎn)開(kāi)“Pins”->“Peripherals”->“Connectivity:SCI”->“SCI4”來(lái)配置SCI模塊,配置為“Asynchronous UART”模式,并選擇開(kāi)發(fā)板所使用的串口引腳,如圖19_11。

389486a0-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-11 配置引腳

在配置界面底部點(diǎn)擊“Stack”,如圖19_12步驟加入串口UART:

38f7a8d4-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-12 加入串口

如圖19_13點(diǎn)擊剛剛加入的窗口,在左下角的“屬性”窗口中配置名字(name)、通道(Channel)、回調(diào)函數(shù)(Callback)名字即可,引腳(Pins)、波特率(Baud Rate)等其他的屬性按照默認(rèn)的配置即可。

39594db4-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-13 配置串口屬性

表3:實(shí)驗(yàn)所使用的UART屬性描述

39b8beca-ab0f-11f0-8c8f-92fbcf53809c.png

使用printf函數(shù)時(shí),需要使用到堆,默認(rèn)情況下堆的大小為0,因此我們需要修改堆的大小??梢栽贔SP配置界面中的“BSP”屬性欄的“RA Common”中通過(guò)修改“Heap size”來(lái)設(shè)置堆區(qū)大小。這里需要設(shè)置為8的整數(shù)倍,對(duì)于RA6M5推薦至少為4K(0x1000),如圖19_14。

3a213054-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-14 修改堆的大小

最后點(diǎn)右上角的“Generate Project Content”按鈕,讓軟件自動(dòng)生成配置代碼。

18.5.2.3

串口初始化函數(shù)

FSP配置并生成代碼之后,首先需要使用R_SCI_UART_Open函數(shù)打開(kāi)SCI4 UART模塊,我們把這層調(diào)用封裝為一個(gè)Debug_UART4_Init函數(shù),如下所示。

列表2:代碼清單19-1:文件bsp_debug_uart.c串口初始化

左右滑動(dòng)查看完整內(nèi)容

/* 調(diào)試串口 UART4 初始化 */
voidDebug_UART4_Init(void)
{
fsp_err_t err =FSP_SUCCESS;


err = R_SCI_UART_Open (&g_uart4_ctrl, &g_uart4_cfg);
assert(FSP_SUCCESS== err);
}

18.5.2.4

R_SCI_UART_Write函數(shù)

串口初始化完成之后,我們可以直接使用R_SCI_UART_Write函數(shù)來(lái)將字符串寫(xiě)入到串口輸出,該函數(shù)的原型如下。

左右滑動(dòng)查看完整內(nèi)容

fsp_err_tR_SCI_UART_Write(uart_ctrl_t*constp_api_ctrl, uint8_tconst *?
→constp_src, uint32_tconst bytes)

參數(shù)p_src指向要寫(xiě)入的字符串首地址

參數(shù)bytes為傳入的要寫(xiě)入的字符的數(shù)目

我們?cè)谑褂肦_SCI_UART_Write函數(shù)需要注意的一些事項(xiàng):若使用了R_SCI_UART_Write()來(lái)發(fā)送數(shù)據(jù),在數(shù)據(jù)發(fā)送完成之后會(huì)導(dǎo)致uart_send_complete_flag這個(gè)標(biāo)志位被置位,因此程序在調(diào)用R_SCI_UART_Write函數(shù)之后需要等待uart_send_complete_flag標(biāo)志位被置位,然后將該標(biāo)志位清零。否則當(dāng)連續(xù)調(diào)用R_SCI_UART_Write函數(shù)時(shí)可能導(dǎo)致發(fā)送數(shù)據(jù)丟失。建議使用后文所述的printf函數(shù)將數(shù)據(jù)發(fā)送到串口。

18.5.2.5

串口中斷回調(diào)函數(shù)

在前面的FSP配置步驟的時(shí)候,我們?cè)O(shè)置了串口中斷回調(diào)函數(shù)的名字為:debug_uart4_callback。設(shè)置這么一個(gè)函數(shù)的原因是:每當(dāng)串口發(fā)送或者接收完成一個(gè)字符時(shí),都會(huì)默認(rèn)觸發(fā)串口的中斷,而在串口中斷中會(huì)調(diào)用函數(shù) debug_uart4_callback,在函數(shù)里我們需要根據(jù)不同的中斷情況進(jìn)行相應(yīng)的處理。

因此,我們也需要同時(shí)在我們的代碼里面定義并實(shí)現(xiàn)這么函數(shù)debug_uart4_callback。我們把這個(gè)函數(shù)放到文件“bsp_debug_uart.c”中,該函數(shù)代碼如下所示。

其中,需要定義一個(gè)額外的標(biāo)志變量 uart_send_complete_flag來(lái)表示串口發(fā)送數(shù)據(jù)已完成。變量uart_send_complete_flag必須加上 volatile,否則可能被編譯器優(yōu)化。

列表3:代碼清單19-2:文件bsp_debug_uart.c串口中斷回調(diào)函數(shù)

左右滑動(dòng)查看完整內(nèi)容

/* 發(fā)送完成標(biāo)志 */
volatilebool uart_send_complete_flag =false;


/* 串口中斷回調(diào) */
voiddebug_uart4_callback(uart_callback_args_t* p_args)
{
switch(p_args->event)
{
caseUART_EVENT_RX_CHAR:
{
/* 把串口接收到的數(shù)據(jù)發(fā)送回去 */
R_SCI_UART_Write(&g_uart4_ctrl, (uint8_t*)&(p_args->data),1);
break;
}
caseUART_EVENT_TX_COMPLETE:
{
uart_send_complete_flag =true;
break;
}
default:
break;
}
}

18.5.2.6

重定向printf輸出到串口

雖然我們可以直接使用R_SCI_UART_Write函數(shù)來(lái)將字符串輸出到串口,但是這個(gè)函數(shù)在很多情況下沒(méi)有printf函數(shù)那樣方便。所以我們需要添加一段代碼來(lái)將printf輸出重定向到串口(UART4)。

我們將以下的代碼添加到源文件“bsp_debug_uart.c”里面。由于不同C庫(kù)的printf 函數(shù)的底層實(shí)現(xiàn)不同,這里使用條件編譯選擇我們需要重寫(xiě)的函數(shù)。

列表4:代碼清單19-3:重定向printf輸出到串口

左右滑動(dòng)查看完整內(nèi)容

/* 重定向 printf 輸出 */
#ifdefined __GNUC__ && !defined __clang__
int_write(intfd,char*pBuffer,intsize);//防止編譯警告
int_write(intfd,char*pBuffer,intsize)
{
(void)fd;
R_SCI_UART_Write(&g_uart4_ctrl, (uint8_t*)pBuffer, (uint32_t)size);
while(uart_send_complete_flag ==false);
uart_send_complete_flag =false;


returnsize;
}
#else
intfputc(intch, FILE *f)
{
(void)f;
R_SCI_UART_Write(&g_uart4_ctrl, (uint8_t*)&ch,1);
while(uart_send_complete_flag ==false);
uart_send_complete_flag =false;


returnch;
}
#endif

在使用e2stdio的時(shí)候,需要修改C語(yǔ)言項(xiàng)目設(shè)置,按下圖步驟修改即可。

3a750634-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-15 打開(kāi)C/C++項(xiàng)目設(shè)置串口

3acc315c-ab0f-11f0-8c8f-92fbcf53809c.png

圖19-16 修改項(xiàng)目工具設(shè)置

18.5.2.7

hal_entry入口函數(shù)

C語(yǔ)言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。我們?cè)趆al_entry函數(shù)里面編寫(xiě)我們的應(yīng)用代碼。

列表5:代碼清單19-4:main函數(shù)調(diào)用的hal_entry函數(shù)

左右滑動(dòng)查看完整內(nèi)容

voidhal_entry(void)
{
/*TODO:add your own code here */


LED_Init();// LED 初始化
Debug_UART4_Init();// SCI4 UART 調(diào)試串口初始化


printf("這是一個(gè)串口收發(fā)回顯例程
");
printf("打開(kāi)串口助手發(fā)送數(shù)據(jù),接收窗口會(huì)回顯所發(fā)送的數(shù)據(jù)
");
while(1)
{
LED1_ON;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
LED1_OFF;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
}


#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

首先我們調(diào)用LED_Init函數(shù)初始化板子上的LED 燈,然后調(diào)用Debug_UART4_Init函數(shù)初始化SCI4 UART作為調(diào)試串口來(lái)使用。之后就可以使用printf 函數(shù)了,我們調(diào)用printf輸出提示信息到串口。接著在while循環(huán)里是一段讓LED1每隔一秒鐘閃爍的程序。3b2d57e8-ab0f-11f0-8c8f-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    243

    文章

    24540

    瀏覽量

    689550
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1614

    瀏覽量

    82384
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1309

    瀏覽量

    106424
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4413

    瀏覽量

    67237
  • 開(kāi)發(fā)環(huán)境

    關(guān)注

    1

    文章

    265

    瀏覽量

    17592

原文標(biāo)題:軟件設(shè)計(jì)及串口相關(guān)函數(shù)介紹——瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南(47)

文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    軟件設(shè)計(jì)師全書(shū)

    軟件設(shè)計(jì)師全書(shū)有軟件設(shè)計(jì)師教程,軟件設(shè)計(jì)師考試輔導(dǎo),考點(diǎn)精講,例題分析,強(qiáng)化訓(xùn)練,軟件設(shè)計(jì)課程課件等內(nèi)容。
    發(fā)表于 10-29 17:45 ?0次下載
    <b class='flag-5'>軟件設(shè)計(jì)</b>師全書(shū)

    基于Vxworks的LANE軟件設(shè)計(jì)探討

    基于Vxworks的LANE軟件設(shè)計(jì)探討
    發(fā)表于 03-29 12:27 ?11次下載

    多功能函數(shù)發(fā)生器的波形分析計(jì)算與軟件設(shè)計(jì)

    多功能函數(shù)發(fā)生器的波形分析計(jì)算與軟件設(shè)計(jì)
    發(fā)表于 05-14 14:27 ?29次下載

    8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的藝術(shù)

    8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的藝術(shù):主要介紹了8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的思維與解決方法?!?051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的藝術(shù)》每一章都是一個(gè)精彩的例子,范例說(shuō)明深入淺出。重點(diǎn)
    發(fā)表于 10-08 21:21 ?0次下載
    8051單片機(jī)C語(yǔ)言<b class='flag-5'>軟件設(shè)計(jì)</b>的藝術(shù)

    基于Windows服務(wù)的網(wǎng)口與串口通信軟件設(shè)計(jì)

    開(kāi)發(fā)基于PC 機(jī)Windows 服務(wù)所實(shí)現(xiàn)的遠(yuǎn)程控制,在某些場(chǎng)合仍值得進(jìn)一步研究。文中闡述了Windows 服務(wù)基本特性及架構(gòu)設(shè)計(jì),分析了網(wǎng)口與串口通信協(xié)議及其軟件設(shè)計(jì)流程。就此,實(shí)
    發(fā)表于 12-25 15:23 ?52次下載

    微波自動(dòng)測(cè)量系統(tǒng)軟件設(shè)計(jì)

    微波自動(dòng)測(cè)量系統(tǒng)軟件設(shè)計(jì):介紹了一套微波自動(dòng)測(cè)量系統(tǒng)簡(jiǎn)易標(biāo)量網(wǎng)絡(luò)分析儀系統(tǒng)的軟件設(shè)計(jì). 該軟件系統(tǒng)采用VC 編程下的Windows 用戶(hù)界面,操作方便,交互性好,并結(jié)合幾個(gè)測(cè)試功能模
    發(fā)表于 12-29 23:46 ?16次下載

    基于底層硬體的軟件設(shè)計(jì)

    本內(nèi)容介紹了基于底層硬體的軟件設(shè)計(jì)
    發(fā)表于 05-09 16:04 ?60次下載
    基于底層硬體的<b class='flag-5'>軟件設(shè)計(jì)</b>

    8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)

    8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)
    發(fā)表于 10-16 11:25 ?92次下載
    8051單片機(jī)C語(yǔ)言<b class='flag-5'>軟件設(shè)計(jì)</b>8051單片機(jī)C語(yǔ)言<b class='flag-5'>軟件設(shè)計(jì)</b>

    基于UML對(duì)象建模的財(cái)務(wù)軟件設(shè)計(jì)研究

    本篇目的在于研究基于UML對(duì)象建模的財(cái)務(wù)軟件設(shè)計(jì)?;诋?dāng)前UML、財(cái)務(wù)軟件設(shè)計(jì)相關(guān)知識(shí),能夠去優(yōu)化分析基于UML的財(cái)務(wù)軟件設(shè)計(jì)相關(guān)需求,開(kāi)發(fā)
    發(fā)表于 11-13 17:16 ?6次下載
    基于UML對(duì)象建模的財(cái)務(wù)<b class='flag-5'>軟件設(shè)計(jì)</b>研究

    ADS軟件設(shè)計(jì)VCO的方法介紹

    本章內(nèi)容是介紹使用ADS軟件設(shè)計(jì)VCO的方法:包括原理圖繪制,電路參數(shù)的調(diào)整優(yōu)化、仿真等。 下面開(kāi)始按順序詳細(xì)介紹ADS軟件的使用方法。 設(shè)計(jì)振蕩器這種有源器件,第一步要做的就是管子的
    發(fā)表于 12-11 17:16 ?1.4w次閱讀
    ADS<b class='flag-5'>軟件設(shè)計(jì)</b>VCO的方法<b class='flag-5'>介紹</b>

    關(guān)于A(yíng)tmel的軟件設(shè)計(jì)框架的介紹

    Atmel的軟件設(shè)計(jì)框架
    的頭像 發(fā)表于 07-06 04:49 ?3611次閱讀
    關(guān)于A(yíng)tmel的<b class='flag-5'>軟件設(shè)計(jì)</b>框架的<b class='flag-5'>介紹</b>

    CapTIvateTM軟件設(shè)計(jì)平臺(tái)的應(yīng)用介紹(2)

    CapTIvate Technology軟件設(shè)計(jì)快速指南(三) - CapTIvate軟件設(shè)計(jì)中心(CDC)介紹2
    的頭像 發(fā)表于 08-13 00:20 ?3125次閱讀

    CapTIvateTM軟件設(shè)計(jì)平臺(tái)的應(yīng)用介紹(3)

    CapTIvate Technology軟件設(shè)計(jì)快速指南(五) - CapTIvate軟件設(shè)計(jì)中心(CDC)介紹3
    的頭像 發(fā)表于 08-21 00:52 ?3960次閱讀

    Quartus II軟件設(shè)計(jì)系列的基礎(chǔ)教程說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Quartus II軟件設(shè)計(jì)系列的基礎(chǔ)教程說(shuō)明。
    發(fā)表于 06-17 08:00 ?4次下載
    Quartus II<b class='flag-5'>軟件設(shè)計(jì)</b>系列的基礎(chǔ)教程說(shuō)明

    STM32串口通信相關(guān)寄存器和中斷回調(diào)函數(shù)

    (USART_CR1)控制寄存器 2 (USART_CR2)控制寄存器 3 (USART_CR3)串口配置串口初始化GPIO配置,開(kāi)啟中斷中斷函數(shù)串口1中斷服務(wù)
    發(fā)表于 12-28 19:11 ?7次下載
    STM32<b class='flag-5'>串口</b>通信<b class='flag-5'>相關(guān)</b>寄存器和中斷回調(diào)<b class='flag-5'>函數(shù)</b>