Просмотр исходного кода

更新readme,命令新增设备名称参数

misonyo 7 лет назад
Родитель
Сommit
e5d1c71bdc
4 измененных файлов с 56 добавлено и 29 удалено
  1. 6 6
      README.md
  2. 18 9
      i2c_aht10_sample.c
  3. 16 7
      spi_w25q_sample.c
  4. 16 7
      uart_sample.c

+ 6 - 6
README.md

@@ -4,14 +4,14 @@
 
 这个软件包包含一些外设设备操作的例程。
 
-### 1.1 目录结构
+### 1.1 例程说明
 
-| 目录             | 例程                            |
+| 文件             | 说明                            |
 | ---------------- | ------------------------------- |
-| i2c              | i2c 设备的使用                  |
-| pin              | pin 设备的使用                  |
-| serial           | serial 设备的使用               |
-| spi              | spi 设备的使用                  |
+| i2c_aht10_sample.c       | i2c 设备的使用例程                |
+| pin_beep_sample.c        | pin 设备的使用例程                 |
+| uart_sample.c            | serial 设备的使用例程             |
+| spi_w25q_sample.c        | spi 设备的使用例程                  |
 
 ### 1.2 许可证
 

+ 18 - 9
i2c_aht10_sample.c

@@ -10,16 +10,15 @@
 /* 
  * 程序清单:这是一个 I2C 设备使用例程
  * 例程导出了 i2c_aht10_sample 命令到控制终端
- * 命令调用格式:i2c_aht10_sample
+ * 命令调用格式:i2c_aht10_sample i2c1
+ * 命令解释:命令第二个参数是要使用的I2C总线设备名称,为空则使用默认的I2C总线设备
  * 程序功能:通过 I2C 设备读取温湿度传感器 aht10 的温湿度数据并打印
 */
 
 #include <rtthread.h>
 #include <rtdevice.h>
 
-#ifndef AHT10_I2C_BUS_NAME
 #define AHT10_I2C_BUS_NAME          "i2c1"  /* 传感器连接的I2C总线设备名称 */
-#endif
 #define AHT10_ADDR                  0x38
 #define AHT10_CALIBRATION_CMD       0xE1    /* 校准命令 */
 #define AHT10_NORMAL_CMD            0xA8    /* 一般命令 */
@@ -74,16 +73,16 @@ static void read_temp_humi(float *cur_temp,float *cur_humi)
     *cur_temp = ((temp[3] & 0xf) << 16 | temp[4] << 8 | temp[5]) * 200.0 / (1 << 20) - 50;
 }
 
-static void aht10_init(void)
+static void aht10_init(const char *name)
 {
     rt_uint8_t temp[2] = {0, 0};
 
     /* 查找I2C总线设备,获取I2C总线设备句柄 */
-    i2c_bus = rt_i2c_bus_device_find(AHT10_I2C_BUS_NAME);
+    i2c_bus = rt_i2c_bus_device_find(name);
 
     if (i2c_bus == RT_NULL)
     {
-        rt_kprintf("can't find %s device", AHT10_I2C_BUS_NAME);
+        rt_kprintf("can't find %s device!\n", name);
     }
     else
     {
@@ -99,17 +98,27 @@ static void aht10_init(void)
     }
 }
 
-static void i2c_aht10_sample(void)
+static void i2c_aht10_sample(int argc,char *argv[])
 {
     float humidity, temperature;
+    char name[RT_NAME_MAX];
 
     humidity = 0.0;
     temperature = 0.0;
 
+    if (argc == 2)
+    {
+        rt_strncpy(name, argv[1], RT_NAME_MAX);
+    }
+    else
+    {
+        rt_strncpy(name, AHT10_I2C_BUS_NAME, RT_NAME_MAX);
+    }
+    rt_kprintf("name is:%s!\n",name);
     if (!initialized)
     {
         /* 传感器初始化 */
-        aht10_init();
+        aht10_init(name);
     }
     if (initialized)
     {
@@ -121,7 +130,7 @@ static void i2c_aht10_sample(void)
     }
     else
     {
-        rt_kprintf("initialize sensor failed\n");
+        rt_kprintf("i2c sample run failed! initialize sensor failed!\n");
     }
 }
 /* 导出到 msh 命令列表中 */

+ 16 - 7
spi_w25q_sample.c

@@ -10,28 +10,37 @@
 /* 
  * 程序清单:这是一个 SPI 设备使用例程
  * 例程导出了 spi_w25q_sample 命令到控制终端
- * 命令调用格式:spi_w25q_sample
+ * 命令调用格式:spi_w25q_sample spi10
+ * 命令解释:命令第二个参数是要使用的SPI设备名称,为空则使用默认的SPI设备
  * 程序功能:通过SPI设备读取 w25q 的 ID 数据
 */
 
 #include <rtthread.h>
 #include <rtdevice.h>
 
-#ifndef W25Q_SPI_DEVICE_NAME
 #define W25Q_SPI_DEVICE_NAME     "qspi10"
-#endif
 
-static void spi_w25q_sample(void)
+static void spi_w25q_sample(int argc,char *argv[])
 {
     struct rt_spi_device *spi_dev_w25q;
+    char name[RT_NAME_MAX];
     rt_uint8_t w25x_read_id = 0x90;
     rt_uint8_t id[5] = {0};
 
-    /* 查找 qspi 设备获取设备句柄 */
-    spi_dev_w25q = (struct rt_spi_device *)rt_device_find(W25Q_SPI_DEVICE_NAME);
+    if (argc == 2)
+    {
+        rt_strncpy(name, argv[1], RT_NAME_MAX);
+    }
+    else
+    {
+        rt_strncpy(name, W25Q_SPI_DEVICE_NAME, RT_NAME_MAX);
+    }
+    rt_kprintf("name is:%s!\n",name);
+    /* 查找 spi 设备获取设备句柄 */
+    spi_dev_w25q = (struct rt_spi_device *)rt_device_find(name);
     if (!spi_dev_w25q)
     {
-        rt_kprintf("spi sample run failed! can't find qspi device!");
+        rt_kprintf("spi sample run failed! can't find %s device!\n", name);
     }
     else
     {

+ 16 - 7
uart_sample.c

@@ -10,18 +10,18 @@
 /* 
  * 程序清单:这是一个 串口 设备使用例程
  * 例程导出了 uart_sample 命令到控制终端
- * 命令调用格式:uart_sample
+ * 命令调用格式:uart_sample uart2
+ * 命令解释:命令第二个参数是要使用的串口设备名称,为空则使用默认的串口设备
  * 程序功能:通过串口输出字符串"hello RT-Thread!",然后错位输出输入的字符
 */
 
 #include <rtthread.h>
 
-#ifndef SAMPLE_UART_NAME
 #define SAMPLE_UART_NAME       "uart2"
-#endif
+
 /* 用于接收消息的信号量 */
 static struct rt_semaphore rx_sem;
-
+static char uart_name[RT_NAME_MAX];
 /* 接收数据回调函数 */
 static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
 {
@@ -38,7 +38,7 @@ static void serial_thread_entry(void* parameter)
     char str[] = "hello RT-Thread!\r\n";
 
     /* 查找系统中的串口设备 */
-    serial = rt_device_find(SAMPLE_UART_NAME);
+    serial = rt_device_find(uart_name);
     
     if (serial != RT_NULL)
     {
@@ -65,12 +65,21 @@ static void serial_thread_entry(void* parameter)
     }
     else
     {
-        rt_kprintf("open serial failed!\n");
+        rt_kprintf("uart sample run failed! can't find %s device!\n",uart_name);
     }
 }
 
-static void uart_sample(void)
+static void uart_sample(int argc,char *argv[])
 {
+    if (argc == 2)
+    {
+        rt_strncpy(uart_name, argv[1], RT_NAME_MAX);
+    }
+    else
+    {
+        rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX);
+    }
+    rt_kprintf("name is:%s!\n",uart_name);
     /* 创建 serial 线程 */
     rt_thread_t thread = rt_thread_create("serial",serial_thread_entry, RT_NULL, 1024, 25, 10);
     /* 创建成功则启动线程 */