完善资料让更多小伙伴认识你,还能领取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的初始化设置等问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
3102 浏览 0 评论
3360 浏览 9 评论
3045 浏览 16 评论
3539 浏览 1 评论
9154 浏览 16 评论
1280浏览 3评论
659浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
651浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2397浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1963浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-11 16:11 , Processed in 0.871617 second(s), Total 46, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191