atmel ASF学习笔记
- 格式:doc
- 大小:268.04 KB
- 文档页数:12
以下命令均采用小写字母欧阳家百(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(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分别指的是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,建议你首先查阅官方的技术
文档和手册,然后结合社区资源和实际开发经验,逐步掌握这些技
术的应用和开发技巧。
希望这些信息能够帮助到你,如果有更多问题,欢迎继续向我提问。
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 确保解决方案适合你的客户要了解你的客户,了解这个组织的优势、劣势及能力——管理层做得到的事和做不到的事。
牢记你的解决方案要与这几个要素相符。
了解这些局限后,你就得确保提出的任何建议都在客户力所能及的范围。
而麦肯锡人(尤其是新入职的员工)的第一反应是竭力追求最佳的解决方案。
Atmel Studio 6.1简易使用教程 1 新建工程2 工程命名,以LED闪烁为例3 选择目标芯片,本例选择AT32UC3A02564 工程创建完成,在生成的main函数里编写相应代码5 Atmel Software Framework(简称ASF)为不同的MCU提供软件驱动和库来加快开发过程,ASF的架构如下图Your application对应要实现的软件应用Utilities对应开发工具和宏Boards对应开发板或者用户自定义板ASF由Drivers、Components和Services三部分组成:①Drivers对应片上设备的驱动,如ADC、FLASH、GPIO、INTC、PM、PWM、USART等②Components对应外设驱动,如存储器、显示屏、传感器等③Services对应FAT文件系统、DSP库、USB等6 导入ASF。
进行开发时,借用官方提供的驱动,可以大大简化开发进程在此添加Drivers/GPIO点击Apply将选择的模块添加到工程中7 此时编译发现报错双击错误进入错误位置查看Output,发现问题出在编译startup_uc3.S 文件时出现重复定义错误问题的原因在于:startup_uc3.S 文件是Atmel 官方自定义的启动文件,并非标准启动文件(crt0.o,指定main 函数的入口地址),在工程属性里应该设置不使用标准启动文件,否则就会出现重复定义的错误。
解决:在工程目录中右键选择工程属性再次编译,成功通过_start 和_stext 在startup_uc3.S 文件中重复定义,第一次定义在crt0.o 文件中8 在main函数中编写相应代码,实现LED闪烁控制。
9 编译通过后,将生成的.hex或.elf烧写文件下载到flash中看运行结果。
斯坦福 nlp课程笔记斯坦福NLP课程笔记斯坦福大学自然语言处理(NLP)课程是一门涵盖了自然语言处理领域广泛知识的课程。
本篇笔记将对该课程的核心概念和重要内容进行总结和讨论。
以下是我对该课程的学习心得和笔记。
1. 自然语言处理简介自然语言处理是计算机科学与人工智能领域的重要研究方向,涉及处理和理解人类语言的算法和技术。
它包括了文本处理、语音处理、语义理解等方面的内容。
2. 语言模型语言模型是自然语言处理的基础,它可以用来估计或产生自然语言句子的概率。
常见的语言模型包括n-gram模型和神经网络语言模型。
3. 词向量表示词向量表示是NLP中常用的技术,可以将词语映射到一个低维向量空间中,从而捕捉到词语之间的语义关系。
Word2Vec和GloVe是两种常见的词向量表示方法。
4. 序列标注序列标注是将输入的序列与特定的标签进行关联的任务,常见的序列标注任务包括命名实体识别和词性标注。
隐马尔可夫模型(HMM)和条件随机场(CRF)是序列标注中常用的算法。
5. 语义角色标注语义角色标注是指对于一个给定的句子,通过识别出该句子中的动词和名词短语,并为它们分配语义角色标签。
语义角色标注可以帮助理解句子的结构和语义。
6. 语义解析与语法分析语义解析是指将自然语言句子转化为语义表示的过程,常见的语义解析方法包括基于规则的方法和基于统计的方法。
语法分析则是将句子结构化成一种形式化的表示,常见的语法分析方法包括依存句法分析和成分句法分析。
7. 机器翻译机器翻译是将一种自然语言转化为另一种自然语言的任务,机器翻译也是自然语言处理中的重要应用之一。
统计机器翻译和神经网络机器翻译是当前主流的翻译方法。
8. 文本生成文本生成是指通过算法和模型生成符合语法和语义规则的自然语言文本,常见的文本生成任务包括文本摘要和对话生成。
9. 情感分析情感分析是指识别和推测出文本中的情感倾向和情感状态,常见的情感分析任务包括情感分类和情感强度预测。
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;}}}}。