嵌入式技术论坛
直播中

石玉兰

8年用户 1526经验值
私信 关注
[问答]

请问RT-Thread的Finsh是怎么传递串口数据的?

想利用RT-Thread自带的Finsh功能。在看其代码的时候,有个问题没有看明白:
1. Finsh中是怎么获得 uart_sem信号变量的?

我分析过程如下:
1. Finsh初始化过程中,初始化了uart_sem信号量。
2.之后,采用永久等待的方式申请uart_sem信号量。
3. 读取Uart1设备结构体中的存下来的接收到的串口数据。
********
我的疑问:
1.在Uart1接收中断服务程序中,并没有对uart _sem信号量进行操作;那么Finsh线程是怎么获得uart_sem信号量的呢?

请哪位大侠说明一下这个信号量是怎么获得的?和串口Usart1的中断接收是怎么关联起来的?

回帖(1)

小麦地

2022-4-26 10:13:57
finsh_system_init();

  finsh_set_device("uart1");-->

void finsh_set_device(char* device_name)

......

找到此设备并把回调函数设置为finsh_rx_ind  然后在finsh_rx_ind里面处理信号量

rt_device_set_rx_indicate(dev, finsh_rx_ind);

USART1_IRQHandler --> rt_hw_serial_isr

    /* invoke callback */

    if (device->rx_indicate != RT_NULL)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分