atmel ASF学习笔记
Atmel软件框架ASF-3.40文档说明书

The Atmel® Software Framework (ASF, /asf) is a compilation of embedded software for Atmel flash MCUs: megaAVR®, AVR XMEGA®, AVR UC3 and SAM devices. It has been designed to help develop and glue together the different components of a software design. It can easily integrate into an operating system (OS) or run as a stand-alone product.
• Added SAM D20 Services (GFX_mono, Delay, Dataflash, FreeRTOS) • Added SAM D20 applications (DAC sound player, SPI/I2C bootloader, Led toggle d OSC8 calibration,
Installation Instructions
Device Support
This release supports the following devices:
• AVR UC3 • AVR UC3 A0/A1 (revision H and later) • AVR UC3 A3/A4 (revision E and later) • AVR UC3 A3xS/A4xS (revision E and later) • AVR UC3 B (revision F and later) • AVR UC3 C (revision D and later) • AVR UC3 D • AVR UC3 L
《Robot Framework 自动化测试框架核心指南》读书笔记模板

口自动化测试
5 第4章移动手机
自动化测试
第5章 Web自动化测 试
第6章编写自定义的 Robot Framework
Lib
第7章自动化测试用 例的编写技巧
第8章自动化测试框 架的设计
1.1如何创建一个自动化测试项目 1.2 Robot Framework基础关键字 1.3 Robot Framework断言关键字 1.4 BuiltIn库剩余关键字
6.1使用Python编写自定义的Robot Framework Lib 6.2使用Java编写自定义的Robot Framework Lib
7.1自动化测试用例的常用技巧 7.2如何高效地维护好自动化测试用例
8.1 Jenkins下自动化测试的调度管理 8.2如何做好自动化测试平台框架的设计 8.3其他常用的自动化测试框架介绍
读书笔记
基本上就是对摘抄翻译rf官方和rf插件的文档.可以留着参考,但是价值不大.。
快速浏览了一遍书籍内容,主要内容基于robotframework ride客户端,较详细罗列了各个步骤和界面,内 容比较浅显。
目录分析
1
内容简介
第1章初识
2
Robot
Framework
3 第2章 Robot
Framework对 数据库的操作
精彩摘录
这是《Robot Framework 自动化测试框架核心指南》的读书笔记模板,可以替换为自己的精彩内容摘录。
作者介绍
这是《Robot Framework 自动化测试框架核心指南》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
Robot Framework 自动化测试框 架核心指南
读书笔记模板
Stata学习笔记之欧阳家百创编

以下命令均采用小写字母欧阳家百(2021.03.07)Chapter 1 stata入门1.1打开数据use "D:\Stata9\auto.dta", clear 用use命令打开数据sysuse auto,clear auto 为系统数据 sysuse为打开系统数据的命令1.2获取帮助Help summarize summarize为需要获取帮助对象可以改为其他的需要帮助的对象Findit summarize,net寻找网络帮助summarize为需要获取帮助对象Search summarize ,net 寻找网络帮助summarize为需要获取帮助对象显示结果Display 5+91.3描述统计(summarize 可简写成sum)Use atuo,clearSummarize price 描述price的观察值个数、平均值、标准差、最小值、最大值Sum weight summarize可简写成sumSum weight price 同时完成上面两步1.4绘图Scatter price weight scatter 为绘制散点图命令Line price weight ,sort line 为绘制折线图命令,sort为排序,绘制折线图前需要先排序1.5生成新的数据(generate 可简写成gen)ClearSet obs 1000 设置观测值的组数Gen x=_n _n 为观察值得序号Gen y=x+1001.6控制结果输出显示List n1.7设置屏幕滚动Set more off 先设置此项则显示时,屏幕不停止Set more on 先设置此项则显示时,会使显示停止1.8清除内存中原有内容clear1.9设置文件存取路径(cd)Cd d:\stata d:\stata为路径1.10如果想知道当前路径下有哪些文件,可以用dir 命令来列示.dir1.11假设你想在D 盘的根目录下创建一个新的文件夹mydata 来存放数据文件,命令为mkdir。
asf库函数

asf库函数ASF(Advanced Software Framework)库是微芯片公司所提供的开发工具,在各种微芯片上用C语言进行开发,提供丰富的应用程序接口(API),并能适配不同硬件平台。
ASF库是针对微芯片进行开发的,能够极大的提高开发效率和降低开发难度,成为目前非常流行的嵌入式开发工具。
ASF库中包含了大量的API函数,这些函数都是针对于各种不同的应用场景所提供的。
下面我们来一步步的了解ASF库函数。
1. ASF库函数概述ASF库函数提供了许多可重复使用的现成功能,这些功能包括文件系统、串口通信、网络协议栈、USB接口等等。
这些功能函数封装成API函数,可以方便地在C语言程序中调用。
ASF库可在开发板上运行,并且不需要与特定的操作系统或文件系统配合使用。
2. ASF库函数的使用ASF库函数可以在各种开发工具中使用,并提供了相应的示例代码。
开发者可以通过调用ASF库函数来完成各种应用,而不必学习芯片寄存器和底层驱动等知识。
在使用ASF库函数时,需要先初始化相应的设备和系统,这有利于保证各种设备和系统的正常运行。
3. ASF库函数的优点ASF库函数提供了许多可重用的现成功能,这让开发者可以更加专注于应用程序的开发上。
通过使用ASF库函数,可以降低开发难度和提高开发效率。
同时,ASF库函数充分利用微芯片提供的硬件资源,以达到最佳的性能和功率消耗比。
4. ASF库函数的应用场景ASF库函数广泛应用于嵌入式系统中,包括传感器、控制器、网关等应用。
它还广泛应用于医疗设备、智能家居、工业自动化等领域。
通过使用ASF库函数,开发者可以用更少的代码和时间来实现各种应用。
总之,ASF库函数是嵌入式系统开发的好帮手,它提供了许多可重用的现成功能,可以降低开发难度和提高开发效率。
如果您是嵌入式开发人员,ASF库函数一定是您的最佳选择。
atsam asf手册

atsam asf手册
ATSAM和ASF分别指的是Atmel的ARM-based处理器系列和Atmel Software Framework。
ATSAM系列是Atmel的ARM处理器系列,包括ATSAM3、ATSAM4、ATSAMD和ATSAME等系列,这些处理器
广泛应用于嵌入式系统中。
ASF是Atmel提供的一套软件框架,用
于简化嵌入式应用程序的开发。
ASF提供了丰富的库函数、示例代
码和工具,帮助开发人员快速开发嵌入式应用程序。
对于ATSAM和ASF的手册,你可以在Atmel官方网站上找到相
关的技术文档和手册。
这些手册包括处理器的数据手册、参考手册、用户指南等,以及ASF的文档和API参考手册。
在这些手册中,你
可以找到关于处理器架构、外设功能、寄存器编程、软件框架的详
细信息,以及示例代码和开发工具的介绍。
此外,你还可以在社区论坛、技术博客和开发者社区中寻求帮
助和资源,这些地方经常有开发者分享关于ATSAM和ASF的经验和
技术讨论。
总之,要深入了解ATSAM和ASF,建议你首先查阅官方的技术
文档和手册,然后结合社区资源和实际开发经验,逐步掌握这些技
术的应用和开发技巧。
希望这些信息能够帮助到你,如果有更多问题,欢迎继续向我提问。
基于ASF的Atmel Studio 7.0使用方法介绍

第2步:新建工程项目
第3步:选择芯片型号
第4步:添加ASF驱动库
第5步:查看ASF驱动使用说明
第6步:编写代码
源码:
#include //包含Atmel MCU软件库头文件
#define LED PIN_PC27 //定义LED所使用的IO口为PC27
#define KEY PIN_PC01 //定义KEY所使用的IO口为PC01
void port_init(void)
{
struct port_config config_port_pin;
port_get_config_defaults(
config_port_pin.direction = PORT_PIN_DIR_OUTPUT; //配置IO口方向为输出
port_pin_set_config(LED,//初始化LED对应IO口
{
port_pin_set_output_level(LED,0);
}
else
{
port_pin_set_output_level(LED,1);
}
}
}
第7步:编译并生产烧录文件
第8步:烧录文件到开发板
int main(void)
{
system_init(); //系统初始化
/* Insert application code here,after the board has been initialized. */
port_init(); //IO初始化
while(1)
{
if(port_pin_get_input_level(KEY)== 0)//KEY按下,LED对应IO电平= 0
briefacse记忆方法

briefacse记忆方法
一、简介
Briefcase记忆方法是一种把大量复杂的信息整合在一个口袋上的记忆形式。
它可以帮助学习者快速地理解、记住、分析、应用复杂的信息,而这些信息可以是文学、历史、科学方面的知识,也可以是任何能够在多个方面进行整理和研究的知识,比如分析案例中的多方视角。
二、过程
1、准备:准备一个实体口袋,或者是一个形象口袋,口袋是存放信息的地方。
2、整理:把所有的信息和知识按照一定的规律整理到口袋里,口袋的内部由若干个口袋分隔,每个口袋用一个具体的主题或概念来标示。
3、体验:学习者在学习过程中,用一种联想的方式,把信息和知识分别放入每一个口袋,并用一种自己的体验方式来实现。
4、回忆:通过口袋,学习者可以快速地回忆所学的知识,有助于更好地复习和理解,也可以更好地应用到实际情况中。
三、优点
1、更快的学习和记忆:Briefcase记忆方法给学习者提供了一个更快学习和记忆信息的办法,可以有效地提高学习效率,节省学习时间。
2、创新分析:口袋中的口袋可以帮助学习者进行创新的分析,
从而更好地理解复杂的知识。
3、强大的应用:Briefcase记忆法可以帮助学习者快速地把知识应用到实际情况中,可以有效地提高学习者的实践能力。
四、缺点
1、时间紧迫:Briefcase记忆法让学习者把大量复杂的信息在较短的时间内完成记忆,如果处理不当,可能会影响学习者的学习效果。
2、费事:Briefcase记忆法的过程比较繁琐,把大量信息整理到口袋中需要学习者付出一定的时间和精力,这可能会影响学习者的学习效率。
麦肯锡方法读书笔记

《麦肯锡学习方法》精华内容提炼同事推荐《麦肯锡学习方法》,看后受益匪浅,为此还特意追订了本书推荐Gene Zelazny的《用图表说话》。
本书由于重要价值信息太多,无法用一篇简短的感想概括。
于是从头把书中的重要信息摘录出来,与大家共享——Alfredx。
第一章建立解决方案1 以事实为基础2 系统化的MECE(me see)原则: 相互独立、完全穷尽。
解决商业问题时,要形成自己的观点,解题思路必须在保持其完整性的同时避免混淆和重叠。
3大胆假设、小心求证:解决一个复杂问题如同开始一段长途旅行,初始假设是你的问题解决路线图。
生成初始假设的方法:1)寻找公司里该领域的行家,这是追上行业最新动向最为快捷、最为有效的方法。
2)将问题拆分,发现关键驱动因素。
建立建议树。
第二章探索分析问题的方法方法:以事实为基础的,系统化的,大胆假设,小心求证1 利用前辈的经验,不要做重复劳动。
2咨询顾问可以转而将解决问题的重点置于“关键驱动因素”。
3 假设求证1)用以事实为基础的分析方法让你的初始假设(或你的直觉)生效,这更有利于别人接受你的观点。
纵然你的直觉反应也许(很可能)是对的,那也要花时间通过事实来验证。
2)麦肯锡使用以事实为基础的分析方法,在为客户提出建议之前都需要进行严格的论证。
4 不要寻找事实去支撑你的提案你的思想要保持开放与灵活,不要让强有力的初始假设成为思想僵化的接口。
不论你觉得自己的初始建设多么精彩绝伦、解决深刻、新颖独特,你都必须时刻准备接受证明你错误的事实。
假如事实证明你的初始假设是错误的,那就根据事实做出调整。
不要将事实捣碎硬塞进你的结构框架。
5 确保解决方案适合你的客户要了解你的客户,了解这个组织的优势、劣势及能力——管理层做得到的事和做不到的事。
牢记你的解决方案要与这几个要素相符。
了解这些局限后,你就得确保提出的任何建议都在客户力所能及的范围。
而麦肯锡人(尤其是新入职的员工)的第一反应是竭力追求最佳的解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Atmel asf学习笔记前言前一段时间入手了一块Arduino DUE开发板,入手后网上查询资料发现资料很少,并且和很多的模块不兼容,这块板子的IO口只能承受3.3v的电压,如果想使用5v的模块,又要动手做兼容模块。
又因为这块板子采用的MCU是SAM3X8E 是一款ARM的主控,就想把它作为cortex M3开发板使用。
环境搭建开发工具:atmel studio 6.1烧写工具:bossac.exe开发工具可以在Atmel官网下载,bossac.exe可以从arduino中提取建立工程为了快速上手这块板子,我决定采用atmel的asf框架创建示例工程,由于在单片机程序开发中,需要通过串口输入输出调试信息,所以首先要实现串口通讯,这里先创建一个串口通讯程序的模板接下来就ok了编译通过下载到mcu中接下来打开串口,查看输出信息测试通过!ASF之串口学习#include <string.h>#include "asf.h"//包含了所需要的模块#include "stdio_serial.h"//串口的出入输出定义#include "conf_board.h"#include "conf_clock.h"#include "conf_example.h"//定义了串口中断入口函数,波特率,串口端口号/** Size of the receive buffer used by the PDC, in bytes. */#define BUFFER_SIZE 100 //定义外设DMA控制器缓冲区大小(字节)/** USART PDC transfer type definition. */#define PDC_TRANSFER 1 //串口发送类型定义/** USART FIFO transfer type definition. */#define BYTE_TRANSFER 0 //串口发送队列类型定义/** Max buffer number. */#define MAX_BUF_NUM 1/** All interrupt mask. */#define ALL_INTERRUPT_MASK 0xffffffff/** Timer counter frequency in Hz. */#define TC_FREQ 1#define STRING_EOL "\r"#define STRING_HEADER "-- USART Serial Example --\r\n" \"-- "BOARD_NAME" --\r\n" \"-- Compiled: "__DATE__" "__TIME__" --"STRING_EOL/** Receive buffer. */static uint8_t gs_puc_buffer[2][BUFFER_SIZE];/** Next Receive buffer. */static uint8_t gs_puc_nextbuffer[2][BUFFER_SIZE];/** Current bytes in buffer. */static uint32_t gs_ul_size_buffer = BUFFER_SIZE;/** Current bytes in next buffer. */static uint32_t gs_ul_size_nextbuffer = BUFFER_SIZE;/** Byte mode read buffer. */static uint32_t gs_ul_read_buffer = 0;/** Current transfer mode. */static uint8_t gs_uc_trans_mode = PDC_TRANSFER;///** Buffer number in use. */static uint8_t gs_uc_buf_num = 0;/** PDC data packet. */pdc_packet_t g_st_packet, g_st_nextpacket;/** Pointer to PDC register base. */Pdc *g_p_pdc;/** Flag of one transfer end. */static uint8_t g_uc_transend_flag = 0;/*** \brief Interrupt handler for USART. Echo the bytes received and start the* next receive.*/void USART_Handler(void){uint32_t ul_status;/* Read USART Status. *///函数返回p_usart->US_CSR,USART0的基地址((Usart *)0x40098000U) ,US_CSR 的偏移地址0x0014//由于c语言为结构体分配的空间是连续的所以很容易实现基地址+偏移地址ul_status = usart_get_status(BOARD_USART);//判断当前的传输模式是否为DMA方式if (gs_uc_trans_mode == PDC_TRANSFER) {/* Receive buffer is full. *///? RXBUFF: Reception Buffer Full//0: The signal Buffer Full from the Receive PDC channel is inactive.//1: The signal Buffer Full from the Receive PDC channel is active//在这里默认是1 在这里做与运算只要US_CSR_RXBUFF为1 结果就为真if (ul_status & US_CSR_RXBUFF) {/* Disable timer. */tc_stop(TC0, 0);/* Echo back buffer. *///g_st_packet 有两个元素//1:The pointer to packet data start address. For pointer or next pointer//2:Size for counter or next counter register (_CR)g_st_packet.ul_addr =(uint32_t)gs_puc_buffer[gs_uc_buf_num];g_st_packet.ul_size = gs_ul_size_buffer;g_st_nextpacket.ul_addr =(uint32_t)gs_puc_nextbuffer[gs_uc_buf_num];g_st_nextpacket.ul_size = gs_ul_size_nextbuffer;//DMA发送初始化pdc_tx_init(g_p_pdc, &g_st_packet, &g_st_nextpacket);if (g_uc_transend_flag) {gs_ul_size_buffer = BUFFER_SIZE;gs_ul_size_nextbuffer = BUFFER_SIZE;g_uc_transend_flag = 0;}gs_uc_buf_num = MAX_BUF_NUM - gs_uc_buf_num;/* Restart read on buffer. */g_st_packet.ul_addr =(uint32_t)gs_puc_buffer[gs_uc_buf_num];//数组的地址空间是连续的g_st_packet.ul_size = BUFFER_SIZE;g_st_nextpacket.ul_addr =(uint32_t)gs_puc_nextbuffer[ gs_uc_buf_num];g_st_nextpacket.ul_size = BUFFER_SIZE;//DMA接收初始化pdc_rx_init(g_p_pdc, &g_st_packet, &g_st_nextpacket);/* Restart timer. */tc_start(TC0, 0);}} else {/* Transfer without PDC. */if (ul_status & US_CSR_RXRDY) {usart_getchar(BOARD_USART, (uint32_t *)&gs_ul_read_buffer);usart_write(BOARD_USART, gs_ul_read_buffer);}}}/*** \brief Interrupt handler for TC0. Record the number of bytes received,* and then restart a read transfer on the USART if the transfer was stopped.*/void TC0_Handler(void){uint32_t ul_status;uint32_t ul_byte_total = 0;/* Read TC0 Status. */ul_status = tc_get_status(TC0, 0);/* RC compare. */if (((ul_status & TC_SR_CPCS) == TC_SR_CPCS) &&(gs_uc_trans_mode == PDC_TRANSFER)) {/* Flush PDC buffer. */ul_byte_total = BUFFER_SIZE - pdc_read_rx_counter(g_p_pdc);//缓冲区既没用完,也没有没用if ((ul_byte_total != 0) && (ul_byte_total != BUFFER_SIZE)) { /* Log current size. */g_uc_transend_flag = 1;if (pdc_read_rx_next_counter(g_p_pdc) == 0) {gs_ul_size_buffer = BUFFER_SIZE;gs_ul_size_nextbuffer = ul_byte_total;} else {gs_ul_size_buffer = ul_byte_total;gs_ul_size_nextbuffer = 0;}/* Trigger USART Receive Buffer Full Interrupt. */pdc_rx_clear_cnt(g_p_pdc);}}}/*** \brief Configure USART in normal (serial rs232) mode, asynchronous, * 8 bits, 1 stop bit, no parity, 115200 bauds and enable its transmitter* and receiver.*/static void configure_usart(void){const sam_usart_opt_t usart_console_settings = {BOARD_USART_BAUDRATE,US_MR_CHRL_8_BIT,US_MR_PAR_NO,US_MR_NBSTOP_1_BIT,US_MR_CHMODE_NORMAL,/* This field is only used in IrDA mode. */};/* Enable the peripheral clock in the PMC. */sysclk_enable_peripheral_clock(BOARD_ID_USART);/* Configure USART in serial mode. */usart_init_rs232(BOARD_USART, &usart_console_settings,sysclk_get_cpu_hz());/* Disable all the interrupts. */usart_disable_interrupt(BOARD_USART, ALL_INTERRUPT_MASK);/* Enable the receiver and transmitter. */usart_enable_tx(BOARD_USART);usart_enable_rx(BOARD_USART);/* Configure and enable interrupt of USART. */NVIC_EnableIRQ(USART_IRQn);}/*** \brief Configure Timer Counter 0 (TC0) to generate an interrupt every 200ms. * This interrupt will be used to flush USART input and echo back.*/static void configure_tc(void){uint32_t ul_div;uint32_t ul_tcclks;static uint32_t ul_sysclk;/* Get system clock. */ul_sysclk = sysclk_get_cpu_hz();/* Configure PMC. */pmc_enable_periph_clk(ID_TC0);/* Configure TC for a 50Hz frequency and trigger on RC compare. */tc_find_mck_divisor(TC_FREQ, ul_sysclk, &ul_div, &ul_tcclks, ul_sysclk);tc_init(TC0, 0, ul_tcclks | TC_CMR_CPCTRG);tc_write_rc(TC0, 0, (ul_sysclk / ul_div) / TC_FREQ);/* Configure and enable interrupt on RC compare. */NVIC_EnableIRQ((IRQn_Type)ID_TC0);tc_enable_interrupt(TC0, 0, TC_IER_CPCS);}/*** Configure UART for debug message output.*/static void configure_console(void){const usart_serial_options_t uart_serial_options = {.baudrate = CONF_UART_BAUDRA TE,.paritytype = CONF_UART_PARITY};/* Configure console UART. */sysclk_enable_peripheral_clock(CONSOLE_UART_ID);stdio_serial_init(CONF_UART, &uart_serial_options); }/*** \brief Reset the TX & RX, and clear the PDC counter.*/static void usart_clear(void){/* Reset and disable receiver & transmitter. */usart_reset_rx(BOARD_USART);usart_reset_tx(BOARD_USART);/* Clear PDC counter. */g_st_packet.ul_addr = 0;g_st_packet.ul_size = 0;g_st_nextpacket.ul_addr = 0;g_st_nextpacket.ul_size = 0;pdc_rx_init(g_p_pdc, &g_st_packet, &g_st_nextpacket);/* Enable receiver & transmitter. */usart_enable_tx(BOARD_USART);usart_enable_rx(BOARD_USART);}/*** \brief Display main menu.*/static void display_main_menu(void){puts("-- Menu Choices for this example --\r\n""-- s: Switch mode for USART between PDC and without PDC.--\r\n""-- m: Display this menu again.--\r");}/*** \brief Application entry point for usart_serial example.** \return Unused (ANSI-C compatibility).*/int main(void){uint8_t uc_char;uint8_t uc_flag;/* Initialize the SAM system. */sysclk_init();board_init();/* Configure UART for debug message output. */configure_console();/* Output example information. */puts(STRING_HEADER);/* Configure USART. */configure_usart();/* Get board USART PDC base address. */g_p_pdc = usart_get_pdc_base(BOARD_USART);/* Enable receiver and transmitter. */pdc_enable_transfer(g_p_pdc, PERIPH_PTCR_RXTEN | PERIPH_PTCR_TXTEN);/* Configure TC. */configure_tc();/* Start receiving data and start timer. */g_st_packet.ul_addr = (uint32_t)gs_puc_buffer[gs_uc_buf_num];g_st_packet.ul_size = BUFFER_SIZE;g_st_nextpacket.ul_addr = (uint32_t)gs_puc_nextbuffer[gs_uc_buf_num];g_st_nextpacket.ul_size = BUFFER_SIZE;pdc_rx_init(g_p_pdc, &g_st_packet, &g_st_nextpacket);puts("-- Start to echo serial inputs -- \r\n""-I- Default Transfer with PDC \r\n""-I- Press 's' to switch transfer mode \r");gs_uc_trans_mode = PDC_TRANSFER;usart_disable_interrupt(BOARD_USART, US_IDR_RXRDY);usart_enable_interrupt(BOARD_USART, US_IER_RXBUFF);tc_start(TC0, 0);while (1) {uc_char = 0;uc_flag = uart_read(CONSOLE_UART, &uc_char);if (!uc_flag) {switch (uc_char) {case 's':case 'S':if (gs_uc_trans_mode == PDC_TRANSFER) {/* Transfer to no PDC communication mode. *//* Disable PDC controller. */pdc_disable_transfer(g_p_pdc,PERIPH_PTCR_RXTDIS | PERIPH_PTCR_TXTDIS);/* Disable the RXBUFF interrupt. */usart_disable_interrupt(BOARD_USART, US_IDR_RXBUFF);/* Clear USART controller. */usart_clear();/* Enable the RXRDY interrupt. */usart_enable_interrupt(BOARD_USART, US_IER_RXRDY);gs_uc_trans_mode = BYTE_TRANSFER;puts("-I- Transfer without PDC \r");} else if (gs_uc_trans_mode == BYTE_TRANSFER) {pdc_enable_transfer(g_p_pdc,PERIPH_PTCR_RXTEN | PERIPH_PTCR_TXTEN);/* Clear USART controller. */usart_clear();/* Reset pdc current buffer size. */gs_ul_size_buffer = BUFFER_SIZE;gs_ul_size_nextbuffer = BUFFER_SIZE;gs_uc_buf_num = 0;/* Start receiving data. */g_st_packet.ul_addr =(uint32_t)gs_puc_buffer[gs_uc_buf_num];g_st_packet.ul_size = BUFFER_SIZE;g_st_nextpacket.ul_addr =(uint32_t)gs_puc_nextbuffer[gs_uc_buf_num];g_st_nextpacket.ul_size = BUFFER_SIZE;pdc_rx_init(g_p_pdc, &g_st_packet, &g_st_nextpacket);/* Transfer to PDC communication mode, disable RXRDY interrupt and enable RXBUFF interrupt. */usart_disable_interrupt(BOARD_USART, US_IER_RXRDY);usart_enable_interrupt(BOARD_USART, US_IER_RXBUFF);gs_uc_trans_mode = PDC_TRANSFER;puts((const char *)gs_puc_nextbuffer[0]);puts("-I- Transfer with PDC \r");}break;case 'm':case 'M':display_main_menu();break;default:break;}}}}。