fix bumblebee irq entry aligment, fix eclic

This commit is contained in:
acevest
2020-01-09 20:18:18 +08:00
parent 5920066f21
commit bce32faac2
12 changed files with 113 additions and 41 deletions

View File

@@ -104,10 +104,10 @@ typedef enum
#define COMn 2U
#define EVAL_COM0 USART2
#define EVAL_COM0_CLK RCU_USART2
#define EVAL_COM0_TX_PIN GPIO_PIN_2
#define EVAL_COM0_RX_PIN GPIO_PIN_3
#define EVAL_COM0 USART0
#define EVAL_COM0_CLK RCU_USART0
#define EVAL_COM0_TX_PIN GPIO_PIN_9
#define EVAL_COM0_RX_PIN GPIO_PIN_10
#define EVAL_COM0_GPIO_PORT GPIOA
#define EVAL_COM0_GPIO_CLK RCU_GPIOA
@@ -123,7 +123,7 @@ typedef enum
#define EVAL_COM3_TX_PIN GPIO_PIN_10
#define EVAL_COM3_RX_PIN GPIO_PIN_11
#define EVAL_COM3_GPIO_PORT GPIOC
#define EVAL_COM3_GPIO_CLK RCU_GPIOC
#define EVAL_COM3_GPIO_CLK RCU_GPIOB
#define KEYn 3U

View File

@@ -11,7 +11,7 @@
#define USART2_GPIO_TX_PIN GPIO_PIN_10
#define USART2_GPIO_RX_PIN GPIO_PIN_11
#define USART2_GPIO_PORT GPIOC
#define USART2_GPIO_PORT GPIOB
void usart0_init(int baud);

View File

@@ -2,6 +2,10 @@
#include "usart.h"
void usart0_init(int baud)
{
eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);
eclic_irq_enable(USART0_IRQn, 1, 0);
/* enable GPIO clock */
rcu_periph_clock_enable(RCU_GPIOA);
@@ -25,10 +29,14 @@ void usart0_init(int baud)
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);
usart_interrupt_enable(USART0, USART_INT_RBNE);
}
void usart1_init(int baud)
{
eclic_irq_enable(USART1_IRQn, 1, 0);
/* enable GPIO clock */
rcu_periph_clock_enable(RCU_GPIOA);
@@ -52,14 +60,19 @@ void usart1_init(int baud)
usart_receive_config(USART1, USART_RECEIVE_ENABLE);
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
usart_enable(USART1);
usart_interrupt_enable(USART1, USART_INT_RBNE);
}
void usart2_init(int baud)
{
eclic_irq_enable(USART2_IRQn, 1, 0);
/* enable GPIO clock */
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOB);
/* enable USART2 clock */
rcu_periph_clock_enable(RCU_USART2);
@@ -70,7 +83,7 @@ void usart2_init(int baud)
/* connect port to USART0_Rx */
gpio_init(USART2_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, USART2_GPIO_RX_PIN);
gpio_pin_remap_config(GPIO_USART2_FULL_REMAP,ENABLE);
//gpio_pin_remap_config(GPIO_USART2_FULL_REMAP,ENABLE);
/* USART1 configure */
usart_deinit(USART2);
@@ -83,6 +96,9 @@ void usart2_init(int baud)
usart_receive_config(USART2, USART_RECEIVE_ENABLE);
usart_transmit_config(USART2, USART_TRANSMIT_ENABLE);
usart_enable(USART2);
usart_interrupt_enable(USART2, USART_INT_RBNE);
}

View File

@@ -187,7 +187,7 @@
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.scriptfile.134450266" name="Script files (-T)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/link.lds}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds}&quot;"/>
</option>

View File

@@ -1,11 +1,38 @@
#include "mcu_init.h"
#include "tos_k.h"
#define TASK_SIZE 1024
#define BLED_TASK_SIZE 1024
#define WIFI_TASK_SIZE 4096
k_task_t k_task_bled;
k_task_t k_task_wifi;
uint8_t k_bled_stk[TASK_SIZE];
uint8_t k_wifi_stk[TASK_SIZE];
uint8_t k_bled_stk[BLED_TASK_SIZE];
uint8_t k_wifi_stk[WIFI_TASK_SIZE];
void USART0_IRQHandler() {
#if 0
if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){
uint8_t data = usart_data_receive(USART0);
printf("%c\n", data);
}
#endif
}
void USART1_IRQHandler() {
if(RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE)){
uint8_t data = usart_data_receive(USART1);
//tos_at_uart_input_byte(data);
printf("-%c\n", data);
}
}
void USART2_IRQHandler() {
if(RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)){
uint8_t data = usart_data_receive(USART2);
tos_at_uart_input_byte(data);
}
//printf("usart2\n");
}
void task_bled(void *pdata)
{
@@ -33,8 +60,10 @@ void main(void) {
tos_knl_init();
tos_task_create(&k_task_bled, "bled", task_bled, NULL, 5, k_bled_stk, TASK_SIZE, 0);
tos_task_create(&k_task_wifi, "wifi", task_wifi, NULL, 3, k_wifi_stk, TASK_SIZE, 0);
usart0_init(115200);
tos_task_create(&k_task_bled, "bled", task_bled, NULL, 5, k_bled_stk, BLED_TASK_SIZE, 0);
tos_task_create(&k_task_wifi, "wifi", task_wifi, NULL, 3, k_wifi_stk, WIFI_TASK_SIZE, 0);
tos_knl_start();