fix usart irq handler not in safe area
This commit is contained in:
@@ -69,7 +69,7 @@ void usart1_init(int baud)
|
|||||||
|
|
||||||
void usart2_init(int baud)
|
void usart2_init(int baud)
|
||||||
{
|
{
|
||||||
eclic_irq_enable(USART2_IRQn, 1, 0);
|
//eclic_irq_enable(USART2_IRQn, 1, 0);
|
||||||
|
|
||||||
/* enable GPIO clock */
|
/* enable GPIO clock */
|
||||||
rcu_periph_clock_enable(RCU_GPIOB);
|
rcu_periph_clock_enable(RCU_GPIOB);
|
||||||
@@ -98,7 +98,7 @@ void usart2_init(int baud)
|
|||||||
usart_enable(USART2);
|
usart_enable(USART2);
|
||||||
|
|
||||||
|
|
||||||
usart_interrupt_enable(USART2, USART_INT_RBNE);
|
//usart_interrupt_enable(USART2, USART_INT_RBNE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
#define TOS_CFG_MMHEAP_EN 1u
|
#define TOS_CFG_MMHEAP_EN 1u
|
||||||
|
|
||||||
// 配置TencentOS tiny动态内存池大小
|
// 配置TencentOS tiny动态内存池大小
|
||||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 8192
|
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 16384
|
||||||
|
|
||||||
// 配置TencentOS tiny是否开启互斥锁模块
|
// 配置TencentOS tiny是否开启互斥锁模块
|
||||||
#define TOS_CFG_MUTEX_EN 1u
|
#define TOS_CFG_MUTEX_EN 1u
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
#include "mcu_init.h"
|
#include "mcu_init.h"
|
||||||
#include "tos_k.h"
|
#include "tos_k.h"
|
||||||
|
#include "tos_hal.h"
|
||||||
|
|
||||||
#define BLED_TASK_SIZE 1024
|
#define BLED_TASK_SIZE 1024
|
||||||
#define WIFI_TASK_SIZE 4096
|
#define WIFI_TASK_SIZE 4096
|
||||||
@@ -10,28 +11,29 @@ uint8_t k_wifi_stk[WIFI_TASK_SIZE];
|
|||||||
|
|
||||||
|
|
||||||
void USART0_IRQHandler() {
|
void USART0_IRQHandler() {
|
||||||
#if 0
|
tos_knl_irq_enter();
|
||||||
if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){
|
if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){
|
||||||
uint8_t data = usart_data_receive(USART0);
|
uint8_t data = usart_data_receive(USART0);
|
||||||
printf("%c\n", data);
|
printf("%c\n", data);
|
||||||
}
|
}
|
||||||
#endif
|
tos_knl_irq_leave();
|
||||||
}
|
}
|
||||||
|
|
||||||
void USART1_IRQHandler() {
|
void USART1_IRQHandler() {
|
||||||
|
tos_knl_irq_enter();
|
||||||
if(RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE)){
|
if(RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE)){
|
||||||
uint8_t data = usart_data_receive(USART1);
|
uint8_t data = usart_data_receive(USART1);
|
||||||
//tos_at_uart_input_byte(data);
|
tos_at_uart_input_byte(data);
|
||||||
printf("-%c\n", data);
|
|
||||||
}
|
}
|
||||||
|
tos_knl_irq_leave();
|
||||||
}
|
}
|
||||||
|
|
||||||
void USART2_IRQHandler() {
|
void USART2_IRQHandler() {
|
||||||
|
tos_knl_irq_enter();
|
||||||
if(RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)){
|
if(RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)){
|
||||||
uint8_t data = usart_data_receive(USART2);
|
uint8_t data = usart_data_receive(USART2);
|
||||||
tos_at_uart_input_byte(data);
|
|
||||||
}
|
}
|
||||||
//printf("usart2\n");
|
tos_knl_irq_leave();
|
||||||
}
|
}
|
||||||
|
|
||||||
void task_bled(void *pdata)
|
void task_bled(void *pdata)
|
||||||
@@ -40,17 +42,18 @@ void task_bled(void *pdata)
|
|||||||
while (1) {
|
while (1) {
|
||||||
printf("blink led task cnt: %d\n", cnt++);
|
printf("blink led task cnt: %d\n", cnt++);
|
||||||
gpio_bit_write(LED_GPIO_PORT, LED_PIN,cnt % 2 ? SET : RESET);
|
gpio_bit_write(LED_GPIO_PORT, LED_PIN,cnt % 2 ? SET : RESET);
|
||||||
tos_task_delay(1000);
|
tos_task_delay(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void mqtt_demo();
|
extern void mqtt_demo();
|
||||||
|
extern void mqtt_set_esp8266_port(hal_uart_port_t port);
|
||||||
void task_wifi(void *pdata)
|
void task_wifi(void *pdata)
|
||||||
{
|
{
|
||||||
while(1) {
|
while(1) {
|
||||||
mqtt_demo();
|
mqtt_set_esp8266_port(HAL_UART_PORT_1);
|
||||||
tos_task_delay(500);
|
mqtt_demo();
|
||||||
|
tos_task_delay(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,10 +63,8 @@ void main(void) {
|
|||||||
|
|
||||||
tos_knl_init();
|
tos_knl_init();
|
||||||
|
|
||||||
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_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_task_create(&k_task_wifi, "wifi", task_wifi, NULL, 4, k_wifi_stk, WIFI_TASK_SIZE, 0);
|
||||||
|
|
||||||
tos_knl_start();
|
tos_knl_start();
|
||||||
|
|
||||||
|
@@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
#define MQTT_SERVER_IP "111.230.189.156"
|
#define MQTT_SERVER_IP "111.230.189.156"
|
||||||
#define MQTT_SERVER_PORT "1883"
|
#define MQTT_SERVER_PORT "1883"
|
||||||
#define MQTT_PRODUCT_ID "Z774IYDTH0"
|
#define MQTT_PRODUCT_ID "RUAP1R610V"
|
||||||
#define MQTT_DEV_NAME "ChinaMobileStandardBoard"
|
#define MQTT_DEV_NAME "supowang"
|
||||||
#define MQTT_CLIENT_ID "Z774IYDTH0ChinaMobileStandardBoard"
|
#define MQTT_CLIENT_ID "RUAP1R610Vsupowang"
|
||||||
#define MQTT_USR_NAME "Z774IYDTH0ChinaMobileStandardBoard;12010126;RJW8Z;1614485713"
|
#define MQTT_USR_NAME "RUAP1R610Vsupowang;21010406;12365;4294967295"
|
||||||
#define MQTT_PASSWORD "83c5188935eb67708ca5cf3245f4eb3f19b78004e6a0e7d438206939705fc808;hmacsha256"
|
#define MQTT_PASSWORD "1371ae55cd1036f088bd7e39d230712bc3c32c40;hmacsha1"
|
||||||
#define MQTT_SUBSCRIBE_TOPIC "Z774IYDTH0/ChinaMobileStandardBoard/cmd"
|
#define MQTT_SUBSCRIBE_TOPIC "RUAP1R610V/supowang/data"
|
||||||
#define MQTT_PUBLISH_TOPIC "Z774IYDTH0/ChinaMobileStandardBoard/gps"
|
#define MQTT_PUBLISH_TOPIC "RUAP1R610V/supowang/data"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -4,6 +4,13 @@
|
|||||||
|
|
||||||
#define USE_ESP8266
|
#define USE_ESP8266
|
||||||
|
|
||||||
|
static hal_uart_port_t esp8266_port = HAL_UART_PORT_0;
|
||||||
|
|
||||||
|
void mqtt_set_esp8266_port(hal_uart_port_t port) {
|
||||||
|
esp8266_port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void mqtt_demo(void)
|
void mqtt_demo(void)
|
||||||
{
|
{
|
||||||
int count = 1;
|
int count = 1;
|
||||||
@@ -35,8 +42,8 @@ void mqtt_demo(void)
|
|||||||
sub_opt.topic = MQTT_SUBSCRIBE_TOPIC;
|
sub_opt.topic = MQTT_SUBSCRIBE_TOPIC;
|
||||||
|
|
||||||
#ifdef USE_ESP8266
|
#ifdef USE_ESP8266
|
||||||
esp8266_sal_init(HAL_UART_PORT_1);
|
esp8266_sal_init(esp8266_port);
|
||||||
esp8266_join_ap("AceiPhone", "12345678");
|
esp8266_join_ap("SheldonDai", "srnr6x9xbhmb0");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_NB_BC35
|
#ifdef USE_NB_BC35
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
|
|
||||||
typedef struct __UART_HandleTypeDef {
|
typedef struct __UART_HandleTypeDef {
|
||||||
hal_uart_port_t port;
|
hal_uart_port_t port;
|
||||||
} UART_HandleTypeDef;
|
} UART_HandleTypeDef;
|
||||||
|
|
||||||
|
|
||||||
@@ -19,20 +19,20 @@ __API__ int tos_hal_uart_init(hal_uart_t *uart, hal_uart_port_t port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (port == HAL_UART_PORT_0) {
|
if (port == HAL_UART_PORT_0) {
|
||||||
uart->private_uart = &huart0;
|
uart->private_uart = &huart0;
|
||||||
usart0_init(115200);
|
usart0_init(115200);
|
||||||
} else if (port == HAL_UART_PORT_1) {
|
} else if (port == HAL_UART_PORT_1) {
|
||||||
uart->private_uart = &huart1;
|
uart->private_uart = &huart1;
|
||||||
usart1_init(115200);
|
usart1_init(115200);
|
||||||
} else if (port == HAL_UART_PORT_2) {
|
} else if (port == HAL_UART_PORT_2) {
|
||||||
uart->private_uart = &huart2;
|
uart->private_uart = &huart2;
|
||||||
usart2_init(115200);
|
usart2_init(115200);
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uart->port = ((UART_HandleTypeDef*)(uart->private_uart))->port;
|
uart->port = ((UART_HandleTypeDef*)(uart->private_uart))->port;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -54,7 +54,8 @@ __API__ int tos_hal_uart_write(hal_uart_t *uart, const uint8_t *buf, size_t size
|
|||||||
uart_handle = (UART_HandleTypeDef *)uart->private_uart;
|
uart_handle = (UART_HandleTypeDef *)uart->private_uart;
|
||||||
|
|
||||||
for(size_t i=0; i<size; i++) {
|
for(size_t i=0; i<size; i++) {
|
||||||
usart_data_transmit(uart_handle->port, buf[i]);
|
usart_data_transmit(uart_handle->port, buf[i]);
|
||||||
|
tos_task_delay(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user