// ***************************************************************************** // ***************************************************************************** // Section: Included Files // ***************************************************************************** // ***************************************************************************** #include <stddef.h> // Defines NULL #include <stdbool.h> // Defines true #include <stdlib.h> // Defines EXIT_FAILURE #include "definitions.h" // SYS function prototypes char menu[]="How Are you?"; // ***************************************************************************** // ***************************************************************************** // Section: Main Entry Point // ***************************************************************************** // ***************************************************************************** int main ( void ) { /* Initialize all modules */ SYS_Initialize ( NULL ); printf("\r\n--------------I am ATSAMD51--------\r\n"); SERCOM2_USART_Write(menu,sizeof(menu)); while ( true ) { /* Maintain state machines of all polled MPLAB Harmony modules. */ SYS_Tasks ( ); } /* Execution should not come here during normal operation */ return ( EXIT_FAILURE ); } /******************************************************************************* End of File */ 初始化代码: 复制void SYS_Initialize ( void* data ) { /* MISRAC 2012 deviation block start */ /* MISRA C-2012 Rule 2.2 deviated in this file. Deviation record ID - H3_MISRAC_2012_R_2_2_DR_1 */ NVMCTRL_Initialize( ); STDIO_BufferModeSet(); PORT_Initialize(); CLOCK_Initialize(); SERCOM2_USART_Initialize(); EVSYS_Initialize(); NVIC_Initialize(); /* MISRAC 2012 deviation block end */ } void SERCOM2_USART_Initialize( void ) { /* * Configures USART Clock Mode * Configures TXPO and RXPO * Configures Data Order * Configures Standby Mode * Configures Sampling rate * Configures IBON */ SERCOM2_REGS->USART_INT.SERCOM_CTRLA = SERCOM_USART_INT_CTRLA_MODE_USART_INT_CLK | SERCOM_USART_INT_CTRLA_RXPO(0x0UL) | SERCOM_USART_INT_CTRLA_TXPO(0x0UL) | SERCOM_USART_INT_CTRLA_DORD_Msk | SERCOM_USART_INT_CTRLA_IBON_Msk | SERCOM_USART_INT_CTRLA_FORM(0x0UL) | SERCOM_USART_INT_CTRLA_SAMPR(0UL) ; /* Configure Baud Rate */ SERCOM2_REGS->USART_INT.SERCOM_BAUD = (uint16_t)SERCOM_USART_INT_BAUD_BAUD(SERCOM2_USART_INT_BAUD_VALUE); /* * Configures RXEN * Configures TXEN * Configures CHSIZE * Configures Parity * Configures Stop bits */ SERCOM2_REGS->USART_INT.SERCOM_CTRLB = SERCOM_USART_INT_CTRLB_CHSIZE_8_BIT | SERCOM_USART_INT_CTRLB_SBMODE_1_BIT | SERCOM_USART_INT_CTRLB_RXEN_Msk | SERCOM_USART_INT_CTRLB_TXEN_Msk; /* Wait for sync */ while((SERCOM2_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U) { /* Do nothing */ } /* Enable the UART after the configurations */ SERCOM2_REGS->USART_INT.SERCOM_CTRLA |= SERCOM_USART_INT_CTRLA_ENABLE_Msk; /* Wait for sync */ while((SERCOM2_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U) { /* Do nothing */ } } 效果图:
void SYS_Initialize ( void* data ) { /* MISRAC 2012 deviation block start */ /* MISRA C-2012 Rule 2.2 deviated in this file. Deviation record ID - H3_MISRAC_2012_R_2_2_DR_1 */ NVMCTRL_Initialize( ); STDIO_BufferModeSet(); PORT_Initialize(); CLOCK_Initialize(); SERCOM2_USART_Initialize(); EVSYS_Initialize(); NVIC_Initialize(); /* MISRAC 2012 deviation block end */ } void SERCOM2_USART_Initialize( void ) { /* * Configures USART Clock Mode * Configures TXPO and RXPO * Configures Data Order * Configures Standby Mode * Configures Sampling rate * Configures IBON */ SERCOM2_REGS->USART_INT.SERCOM_CTRLA = SERCOM_USART_INT_CTRLA_MODE_USART_INT_CLK | SERCOM_USART_INT_CTRLA_RXPO(0x0UL) | SERCOM_USART_INT_CTRLA_TXPO(0x0UL) | SERCOM_USART_INT_CTRLA_DORD_Msk | SERCOM_USART_INT_CTRLA_IBON_Msk | SERCOM_USART_INT_CTRLA_FORM(0x0UL) | SERCOM_USART_INT_CTRLA_SAMPR(0UL) ; /* Configure Baud Rate */ SERCOM2_REGS->USART_INT.SERCOM_BAUD = (uint16_t)SERCOM_USART_INT_BAUD_BAUD(SERCOM2_USART_INT_BAUD_VALUE); /* * Configures RXEN * Configures TXEN * Configures CHSIZE * Configures Parity * Configures Stop bits */ SERCOM2_REGS->USART_INT.SERCOM_CTRLB = SERCOM_USART_INT_CTRLB_CHSIZE_8_BIT | SERCOM_USART_INT_CTRLB_SBMODE_1_BIT | SERCOM_USART_INT_CTRLB_RXEN_Msk | SERCOM_USART_INT_CTRLB_TXEN_Msk; /* Wait for sync */ while((SERCOM2_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U) { /* Do nothing */ } /* Enable the UART after the configurations */ SERCOM2_REGS->USART_INT.SERCOM_CTRLA |= SERCOM_USART_INT_CTRLA_ENABLE_Msk; /* Wait for sync */ while((SERCOM2_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U) { /* Do nothing */ } } 效果图:
您需要 登录 才可以下载或查看,没有账号?注册
收藏0 举报
丙丁先生 发表于 2022-12-26 04:22 SERCOM2_USART_Write(menu,sizeof(menu));这句话例程中没有是什么意思
丙丁先生 发表于 2022-12-28 11:33 串口助手收到为0是什么原因
paotangsan 发表于 2023-1-4 16:58 这种现成的评估板 他们在做串口走线的时候会有注意到抗干扰吗
tpgf 发表于 2023-1-4 16:49 这个评估板能支持最多多少路串口发送数据呀
renzheshengui 发表于 2023-1-5 08:26 这四个串口之间引脚有复用的情况吗 可以进行重定位吗
wakayi 发表于 2023-1-5 09:09 如果不跑系统的话 可以实现四个串口同时收发数据吗
wowu 发表于 2023-1-5 09:19 一个串口能达到的最大的数据传输速度 在使用两个串口的时候还能达到吗
xiaoqizi 发表于 2023-1-5 10:02 每包数据的发送间隔是自动控制的还是人为延时的呢
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
时间类勋章
人才类勋章
发帖类勋章
等级类勋章
470
3537
7
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号