完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
在新塘NUC131的官方例程包中,是没有模拟UART例程的。不过,可以参考其他芯片的官方例程来实现模拟UART,大致的流程如下:
1. 声明两个GPIO引脚为模拟UART的TX和RX引脚,可以使用不同的GPIO组来实现。 2. 在代码中实现模拟UART发送和接收函数,如下所示: ```c void SimUart_SendByte(uint8_t data) { uint8_t i; // 发送起始位 GPIO_SetOutputLow(SIM_UART_TX_PIN); delay_us(SIM_UART_BIT_DELAY_US); // 发送数据位 for (i = 0; i < 8; i++) { if (data & 0x01) GPIO_SetOutputHigh(SIM_UART_TX_PIN); else GPIO_SetOutputLow(SIM_UART_TX_PIN); data >>= 1; delay_us(SIM_UART_BIT_DELAY_US); } // 发送停止位 GPIO_SetOutputHigh(SIM_UART_TX_PIN); delay_us(SIM_UART_BIT_DELAY_US); } uint8_t SimUart_RecvByte(void) { uint8_t data = 0; uint8_t i; // 等待起始位 while (GPIO_ReadInputPin(SIM_UART_RX_PIN)); // 等待半个位时间,取数据位 delay_us(SIM_UART_BIT_DELAY_US / 2); for (i = 0; i < 8; i++) { data >>= 1; if (GPIO_ReadInputPin(SIM_UART_RX_PIN)) data |= 0x80; delay_us(SIM_UART_BIT_DELAY_US); } // 等待停止位 while (GPIO_ReadInputPin(SIM_UART_RX_PIN)); delay_us(SIM_UART_BIT_DELAY_US); return data; } ``` 3. 在应用层调用模拟UART的发送和接收函数即可。 当然,具体的实现方式还需要根据具体的应用场景来调整,比如,需要考虑波特率、数据位、校验位、停止位等参数的影响,同时,还需要注意GPIO的初始化设置等问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
3188 浏览 9 评论
2878 浏览 16 评论
3381 浏览 1 评论
8813 浏览 16 评论
3979 浏览 18 评论
9611浏览 3评论
981浏览 3评论
502浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
505浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2227浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-20 08:45 , Processed in 1.070272 second(s), Total 46, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号