Skip to content

Commit c790d2e

Browse files
liuhy-2020wangyq2018
authored andcommitted
update drivers.
1 parent 2dcc5c7 commit c790d2e

File tree

12 files changed

+80
-20
lines changed

12 files changed

+80
-20
lines changed

RealThread_ES32F0.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
vendor: RealThread
3-
dvendor: Essemi
3+
dvendor: essemi
44
name: ES32F0
55
version: 0.0.1
66
yaml_version: 1

drivers/rtt/ES/es_conf_info_map.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2903,3 +2903,4 @@ static const struct pin_index pins[] =
29032903

29042904

29052905
#endif
2906+
#endif

drivers/rtt/drv_can.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <board.h>
2828
#include <rtdevice.h>
2929
#include <rtthread.h>
30+
#include <ald_cmu.h>
3031
#include "es_conf_info_can.h"
3132

3233
#ifdef RT_USING_CAN

drivers/rtt/drv_common.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ void SysTick_Configuration(void)
131131
{
132132
/* ticks = sysclk / RT_TICK_PER_SECOND */
133133
SysTick_Config(ald_cmu_get_sys_clock() / RT_TICK_PER_SECOND);
134+
135+
__systick_interval = 1;
134136
}
135137

136138
/**

drivers/rtt/drv_example/i2c_sample.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ static void i2c_io_sample(int argc, char *argv[])
6464
temp_msg.flags = RT_I2C_RD; /* I2C读 */
6565
s_stat = rt_i2c_transfer(i2c_bus,&temp_msg,num_msg); /* 传输消息 */
6666

67-
rt_thread_mdelay(400);
68-
6967
if( s_stat == num_msg )
7068
{
7169
rt_kprintf("receive successful. \n receive messege : %s \n:",buffer);
@@ -87,8 +85,6 @@ static void i2c_io_sample(int argc, char *argv[])
8785
temp_msg.flags = RT_I2C_WR; /* I2C写 */
8886
s_stat = rt_i2c_transfer(i2c_bus,&temp_msg,num_msg); /* 传输一条 */
8987

90-
rt_thread_mdelay(400);
91-
9288
if( s_stat == num_msg )
9389
{
9490
rt_kprintf(" send successful \n messege : %s \n:",buffer);

drivers/rtt/drv_example/led_blink_sample.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@
1919
#include <rtthread.h>
2020
#include <rtdevice.h>
2121
#include <stdlib.h>
22+
#include "drv_gpio.h"
2223

2324
/* PIN脚编号,查看驱动文件drv_gpio.c确定 */
24-
#define LED_PIN_NUM 40 /*PB9*/
25+
#define LED_PIN_NUM GET_PIN(B,9) /*PB9*/
2526
static int pin_num;
2627

2728
static void led_entry(void *parameter)

drivers/rtt/drv_example/pin_beep_sample.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@
1616

1717
#include <rtthread.h>
1818
#include <rtdevice.h>
19+
#include "drv_gpio.h"
1920

2021
/* 引脚编号,通过查看驱动文件drv_gpio.c确定 */
2122
#ifndef BEEP_PIN_NUM
22-
#define BEEP_PIN_NUM 40 /* PB9 */
23+
#define BEEP_PIN_NUM GET_PIN(B,9) /* PB9 */
2324
#endif
2425
#ifndef KEY0_PIN_NUM
25-
#define KEY0_PIN_NUM 18 /* PF0 */
26+
#define KEY0_PIN_NUM GET_PIN(F,0) /* PF0 */
2627
#endif
2728
#ifndef KEY1_PIN_NUM
28-
#define KEY1_PIN_NUM 19 /* PF1 */
29+
#define KEY1_PIN_NUM GET_PIN(F,1) /* PF1 */
2930
#endif
3031

3132
void beep_on(void *args)

drivers/rtt/drv_example/pm_sample.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@
3030

3131
#include <rtthread.h>
3232
#include <rtdevice.h>
33+
#include "drv_gpio.h"
3334

3435

3536
#ifdef RT_USING_PM
3637
#define PM_NAME "pm" /* 设备名称 */
37-
#define WAKE_UP_PIN 19 /* 唤醒源 */
38+
#define WAKE_UP_PIN GET_PIN(F,0) /* 唤醒源 */
3839
#define SLEEP_TIMES 12 /* 进入睡眠次数,轮流进入不同的睡眠模式,包括无睡眠模式 */
3940

4041

drivers/rtt/drv_example/pwm_led_sample.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
#include <rtthread.h>
1818
#include <rtdevice.h>
19-
19+
#include "drv_gpio.h"
2020

2121
#ifdef RT_USING_PWM
2222

23-
#define LED_PIN_NUM 16 /* LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
23+
#define LED_PIN_NUM GET_PIN(A,2) /* LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
2424
#define PWM_DEV_NAME "pwm1" /* PWM设备名称 */
25-
#define PWM_DEV_CHANNEL 1 /* PA8 PWM通道 */
25+
#define PWM_DEV_CHANNEL 1 /* PWM通道 */
2626

2727
struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */
2828

drivers/rtt/drv_example/uart_sample.c

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,28 @@
1212
* 例程导出了 uart_sample 命令到控制终端
1313
* 命令调用格式:uart_sample uart2
1414
* 命令解释:命令第二个参数是要使用的串口设备名称,为空则使用默认的串口设备
15-
* 程序功能:通过串口输出字符串"hello RT-Thread!",然后错位输出输入的字符
15+
* 程序功能:通过串口输出字符串"hello RT-Thread!",然后根据例子类型,处理输入数据,然后输出
1616
*/
1717

1818
#include <rtthread.h>
1919

20-
#define SAMPLE_UART_NAME "uart2" /* 串口设备名称 */
20+
/* UART_SAMPLE_TYPE = 1,错位输出
21+
= 2 接收到固定格式之后输出
22+
*/
23+
#define UART_SAMPLE_TYPE 1
24+
25+
#if (UART_SAMPLE_TYPE == 2)
26+
27+
#define SAMPLE_UART_RXBUF_SIZE 256 /* 接收缓存大小 */
28+
#define SAMPLE_UART_END_SRTING "\r\n" /* 结尾固定格式 */
29+
30+
#endif
31+
32+
#define SAMPLE_UART_NAME "uart0" /* 串口设备名称 */
2133

2234
/* 用于接收消息的信号量 */
2335
static struct rt_semaphore rx_sem;
24-
static rt_device_t serial;
36+
static rt_device_t serial;
2537

2638
/* 接收数据回调函数 */
2739
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
@@ -33,7 +45,8 @@ static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
3345
}
3446

3547
static void serial_thread_entry(void *parameter)
36-
{
48+
{
49+
#if (UART_SAMPLE_TYPE == 1)
3750
char ch;
3851

3952
while (1)
@@ -48,6 +61,42 @@ static void serial_thread_entry(void *parameter)
4861
ch = ch + 1;
4962
rt_device_write(serial, 0, &ch, 1);
5063
}
64+
#endif
65+
66+
#if (UART_SAMPLE_TYPE == 2)
67+
char rx_buf[SAMPLE_UART_RXBUF_SIZE],*end = SAMPLE_UART_END_SRTING; /*rx_buf[]:接收缓存,可修改大小 end[]:固定的结束格式(可修改,不可包含'\0')*/
68+
uint32_t rx_index = 0; /*接收数据的索引 */
69+
uint32_t end_len = rt_strlen(end); /*固定的结束格式的长度*/
70+
71+
while(1)
72+
{
73+
74+
/* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */
75+
while (rt_device_read(serial, -1, (rx_buf + rx_index), 1) != 1)
76+
{
77+
/* 阻塞等待接收信号量,等到信号量后再次读取数据 */
78+
rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
79+
}
80+
81+
rx_index++;
82+
if(rx_index >= SAMPLE_UART_RXBUF_SIZE)
83+
{
84+
rt_kprintf("rx_buf over!\r\n"); /*范围越界*/
85+
}
86+
87+
/*判断是否固定的结尾格式*/
88+
if((rx_index >= end_len)&&\
89+
((rt_strncmp(end,(rx_buf + rx_index - end_len),end_len)) == 0))
90+
{
91+
rt_device_write(serial, 0, rx_buf, rx_index);
92+
rx_index = 0;
93+
}
94+
95+
}
96+
97+
98+
#endif
99+
51100
}
52101

53102
static int uart_sample(int argc, char *argv[])

drivers/rtt/drv_gpio.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,18 @@ void es32f0_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
314314

315315
rt_inline const struct pin_irq_map *get_pin_irq_map(rt_uint16_t gpio_pin)
316316
{
317-
rt_int32_t mapindex = gpio_pin & 0x00FF;
318-
if (mapindex < 0 || mapindex >= ITEM_NUM(pin_irq_map))
317+
uint8_t map_index = 0U;
318+
319+
while(gpio_pin >> (++map_index))
320+
{
321+
}
322+
map_index--;
323+
324+
if (map_index >= ITEM_NUM(pin_irq_map))
319325
{
320326
return RT_NULL;
321327
}
322-
return &pin_irq_map[mapindex];
328+
return &pin_irq_map[map_index];
323329
};
324330

325331
rt_err_t es32f0_pin_attach_irq(struct rt_device *device, rt_int32_t pin,

drivers/rtt/drv_gpio.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
#include "es_conf_info_gpio.h"
2828

29+
#define GET_PIN(port,pin) (ES_PIN_GPIO_##port##_##pin)
30+
2931
int rt_hw_pin_init(void);
3032

3133
#endif

0 commit comments

Comments
 (0)