“12.2:初步实现esp8266处理响应数据,暂不完善。”
This commit is contained in:
39
README.md
39
README.md
@@ -21,21 +21,21 @@
|
|||||||
创建了LED状态灯、Wi-Fi初始化、向子节点传输数据、从子节点接收数据、MQTT上发、MQTT下发6个任务。<br>
|
创建了LED状态灯、Wi-Fi初始化、向子节点传输数据、从子节点接收数据、MQTT上发、MQTT下发6个任务。<br>
|
||||||
|
|
||||||
### 二、自定义传输协议:
|
### 二、自定义传输协议:
|
||||||
自定义传输协议仿照了ModBus传输协议,其完善性相比有欠缺,但是可满足非大型项目的基本使用。在自定义传输协议中,使用十六进制数字进行传输,分别由网关节点和子节点。
|
自定义传输协议仿照了ModBus传输协议,其完善性相比有欠缺,但是可满足非大型项目的基本使用。在自定义传输协议中,使用十六进制数字进行传输,分别由网关节点和子节点。<br>
|
||||||
**1、节点:**<br>
|
**1、节点:**<br>
|
||||||
*规则:*
|
**规则:**
|
||||||
子节点的传输协议主要分为帧头、传感器ID、传感器数据、执行器ID、执行器指令和帧尾。其中,帧头(也是节点ID),用于声明自己是哪个节点上发的数据;传感器ID,用于声明自己是什么传感器;传感器数据,如DHT11温湿度数据;执行器ID也是同理,用于声明自己是什么执行器;执行器指令,一般是0或1,0为关、1为开,用于在执行网关节点下发的控制指令后的返回结果,告诉网关节点是开了还是关了,是否成功,若失败了是什么原因;最后一个是帧尾,为帧头倒写,添加帧头和帧尾的目的是在网关接收多个节点的数据是验证其数据是否完整,不会被其他上传的数据打断。<br>
|
子节点的传输协议主要分为帧头、传感器ID、传感器数据、执行器ID、执行器指令和帧尾。其中,帧头(也是节点ID),用于声明自己是哪个节点上发的数据;传感器ID,用于声明自己是什么传感器;传感器数据,如DHT11温湿度数据;执行器ID也是同理,用于声明自己是什么执行器;执行器指令,一般是0或1,0为关、1为开,用于在执行网关节点下发的控制指令后的返回结果,告诉网关节点是开了还是关了,是否成功,若失败了是什么原因;最后一个是帧尾,为帧头倒写,添加帧头和帧尾的目的是在网关接收多个节点的数据是验证其数据是否完整,不会被其他上传的数据打断。<br>
|
||||||
*节点ID:*
|
**节点ID:**
|
||||||
D1为子节点1,D2为子节点2,以此类推。<br>
|
D1为子节点1,D2为子节点2,以此类推。<br>
|
||||||
*传感器ID:*
|
**传感器ID:**
|
||||||
EA为DHT11温湿度传感器,EB为MQ2烟雾浓度传感器、EC为火焰传感器、ED为光敏传感器。<br>
|
EA为DHT11温湿度传感器,EB为MQ2烟雾浓度传感器、EC为火焰传感器、ED为光敏传感器。<br>
|
||||||
*传感器数据:*
|
**传感器数据:**
|
||||||
如17、35:17为温度数据、35为湿度数据,将其转化为10进制,分别为23℃、湿度53%。<br>
|
如17、35:17为温度数据、35为湿度数据,将其转化为10进制,分别为23℃、湿度53%。<br>
|
||||||
*执行器ID:*
|
**执行器ID:**
|
||||||
FA为LED灯、FB为小风扇、FC为加湿器、FD为蜂鸣器、FE为舵机、FF为加热片。<br>
|
FA为LED灯、FB为小风扇、FC为加湿器、FD为蜂鸣器、FE为舵机、FF为加热片。<br>
|
||||||
*执行器指令*
|
**执行器指令**
|
||||||
0为关、1为开。<br>
|
0为关、1为开。<br>
|
||||||
*帧尾:*
|
**帧尾:**
|
||||||
D1倒过来就是1D,以此类推。<br>
|
D1倒过来就是1D,以此类推。<br>
|
||||||
|
|
||||||
| 目标地址 | 目标信道 | 帧头(也是节点ID) | 传感器ID | 传感器数据 | 执行器ID | 执行器指令 | 帧尾(为帧头倒写) |
|
| 目标地址 | 目标信道 | 帧头(也是节点ID) | 传感器ID | 传感器数据 | 执行器ID | 执行器指令 | 帧尾(为帧头倒写) |
|
||||||
@@ -43,10 +43,9 @@ D1倒过来就是1D,以此类推。<br>
|
|||||||
| 03 E9 | 17 | D1 | EA | 17 35 | FA | 01 | 1D |
|
| 03 E9 | 17 | D1 | EA | 17 35 | FA | 01 | 1D |
|
||||||
|
|
||||||
**2、网关:**
|
**2、网关:**
|
||||||
*规则:*
|
**规则:**
|
||||||
网关的传输协议主要分为帧头、执行器ID、执行器指令和帧尾。其中,帧头也是节点ID,用于声明控制的是哪个节点的设备;执行器ID,同理一般是0或1,用于声明控制的是哪个设备;执行器指令用于声明执行器是开还是关;最后一个是帧尾,为帧头倒写。
|
网关的传输协议主要分为帧头、执行器ID、执行器指令和帧尾。其中,帧头也是节点ID,用于声明控制的是哪个节点的设备;执行器ID,同理一般是0或1,用于声明控制的是哪个设备;执行器指令用于声明执行器是开还是关;最后一个是帧尾,为帧头倒写。*节点ID、执行器ID与上面相同。*<br>
|
||||||
*节点ID、执行器ID与上面相同。*
|
**执行器指令:**
|
||||||
*执行器指令:*
|
|
||||||
一共有两种,一种是常规的0和1,另外一种是温控模式,用于控制温度范围,若超过这个范围就会触发执行器的指令。温控模式默认常开,控制字为02,后面跟的是温控的数据,也就是限定的温湿度数值,如17 20 35 50,就是温度在23~26度之间,湿度在53%~80%之间。
|
一共有两种,一种是常规的0和1,另外一种是温控模式,用于控制温度范围,若超过这个范围就会触发执行器的指令。温控模式默认常开,控制字为02,后面跟的是温控的数据,也就是限定的温湿度数值,如17 20 35 50,就是温度在23~26度之间,湿度在53%~80%之间。
|
||||||
|
|
||||||
*常规模式*
|
*常规模式*
|
||||||
@@ -73,12 +72,12 @@ void vTask(void *<参数>);
|
|||||||
```c
|
```c
|
||||||
TaskHandle_t xTaskHandler;
|
TaskHandle_t xTaskHandler;
|
||||||
xTaskCreate(
|
xTaskCreate(
|
||||||
(TaskFunction_t ) vTask,
|
(TaskFunction_t ) vTask,
|
||||||
(char * ) "<定义一个任务名称>",
|
(char * ) "<定义一个任务名称>",
|
||||||
(configSTACK_DEPTH_TYPE) 1024,
|
(configSTACK_DEPTH_TYPE) 1024,
|
||||||
(void * ) NULL, (若有参数则写参数名称)
|
(void * ) NULL, (若有参数则写参数名称)
|
||||||
(UBaseType_t ) <优先级,数字越大优先级越高>
|
(UBaseType_t ) <优先级,数字越大优先级越高>
|
||||||
(TaskHandle_t * ) &xTaskHandler);
|
(TaskHandle_t * ) &xTaskHandler);
|
||||||
```
|
```
|
||||||
- 启动任务调度函数:
|
- 启动任务调度函数:
|
||||||
```c
|
```c
|
||||||
@@ -95,8 +94,8 @@ QueueHandle_t xQueueHandler;
|
|||||||
- 创建队列:
|
- 创建队列:
|
||||||
```c
|
```c
|
||||||
xQueueHandler = xQueueCreate(
|
xQueueHandler = xQueueCreate(
|
||||||
(UBaseType_t) <队列的长度,单位字节>,
|
(UBaseType_t) <队列的长度,单位字节>,
|
||||||
(UBaseType_t) <每个数据的大小>);
|
(UBaseType_t) <每个数据的大小>);
|
||||||
```
|
```
|
||||||
- 发送队列,也就是将数据存入队列,等待接收,接收时长从0到portMAX_DELAY,如下所示。
|
- 发送队列,也就是将数据存入队列,等待接收,接收时长从0到portMAX_DELAY,如下所示。
|
||||||
```c
|
```c
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
|
|
||||||
#include "stm32f10x.h" // Device header
|
#include "stm32f10x.h" // Device header
|
||||||
|
|
||||||
#define LED_PC13_WORK_MODE LED_PC13_LIGHT_MODE
|
#define LED_PC13_WORK_MODE LIGHT_MODE
|
||||||
|
|
||||||
#define LED_PC13_STM32_STATE_MODE 0
|
#define STM32_STATE_MODE 0
|
||||||
#define LED_PC13_LIGHT_MODE 1
|
#define LIGHT_MODE 1
|
||||||
|
|
||||||
/* PC13LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* PC13LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
#define LED_PC13_GPIO_CLOCK RCC_APB2Periph_GPIOC
|
#define LED_PC13_GPIO_CLOCK RCC_APB2Periph_GPIOC
|
||||||
#define LED_PC13_GPIO_PORT GPIOC
|
#define LED_PC13_GPIO_PORT GPIOC
|
||||||
#define LED_PC13_GPIO_PIN GPIO_Pin_13
|
#define LED_PC13_GPIO_PIN GPIO_Pin_13
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
void vPc13LedInit(void);
|
void vPc13LedInit(void);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1016,7 +1016,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers</GroupName>
|
<GroupName>Drivers</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|||||||
@@ -12,17 +12,17 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
if (xUsartId == USART1)
|
if (xUsartId == USART1)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
|
RCC_APB2PeriphClockCmd(USART1_GPIO_CLOCK,ENABLE);
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
@@ -48,15 +48,15 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
} else if (xUsartId == USART2)
|
} else if (xUsartId == USART2)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
|
RCC_APB2PeriphClockCmd(USART2_GPIO_CLOCK,ENABLE);
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
@@ -82,16 +82,16 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
} else if (xUsartId == USART3)
|
} else if (xUsartId == USART3)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
|
RCC_APB2PeriphClockCmd(USART3_GPIO_CLOCK,ENABLE);
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART3_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART3_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
@@ -220,13 +220,13 @@ void USART1_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_SYSTEM == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_SYSTEM == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_SYSTEM == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
@@ -244,13 +244,13 @@ void USART2_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_SYSTEM == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_SYSTEM == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_SYSTEM == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
@@ -268,13 +268,13 @@ void USART3_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_SYSTEM == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_SYSTEM == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_SYSTEM == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,19 @@
|
|||||||
#ifndef __USART_H__
|
#ifndef __USART_H__
|
||||||
#define __USART_H__
|
#define __USART_H__
|
||||||
|
|
||||||
#define USE_NONE_SYSTEM 0
|
#define USE_SYSTEM FREERTOS
|
||||||
#define USE_FREERTOS 1
|
#define NONE 0
|
||||||
#define USE_OSAL 0
|
#define FREERTOS 1
|
||||||
|
#define OSAL 2
|
||||||
#define vUsart1IrqHandler USART1_IRQHandler
|
#define vUsart1IrqHandler USART1_IRQHandler
|
||||||
#define vEsp8266IrqHandler USART2_IRQHandler
|
#define vEsp8266IrqHandler USART2_IRQHandler
|
||||||
#define vLoRaIrqHandler USART3_IRQHandler
|
#define vLoRaIrqHandler USART3_IRQHandler
|
||||||
|
#define USART1_GPIO_CLOCK RCC_APB2Periph_GPIOA
|
||||||
|
#define USART2_GPIO_CLOCK RCC_APB2Periph_GPIOA
|
||||||
|
#define USART3_GPIO_CLOCK RCC_APB2Periph_GPIOB
|
||||||
|
#define USART1_GPIO_PORT GPIOA
|
||||||
|
#define USART2_GPIO_PORT GPIOA
|
||||||
|
#define USART3_GPIO_PORT GPIOB
|
||||||
#define USART1_GPIO_PIN_TX GPIO_Pin_9
|
#define USART1_GPIO_PIN_TX GPIO_Pin_9
|
||||||
#define USART1_GPIO_PIN_RX GPIO_Pin_10
|
#define USART1_GPIO_PIN_RX GPIO_Pin_10
|
||||||
#define USART2_GPIO_PIN_TX GPIO_Pin_2
|
#define USART2_GPIO_PIN_TX GPIO_Pin_2
|
||||||
@@ -14,11 +21,11 @@
|
|||||||
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
||||||
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
||||||
|
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_SYSTEM == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_SYSTEM == FREERTOS)
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_SYSTEM == OSAL)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "stm32f10x.h" // Device header
|
#include "stm32f10x.h" // Device header
|
||||||
@@ -26,12 +33,12 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_SYSTEM == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_SYSTEM == FREERTOS)
|
||||||
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
||||||
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
||||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_SYSTEM == OSAL)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
#include "semphr.h"
|
#include "semphr.h"
|
||||||
#include "LED.h"
|
#include "LED.h"
|
||||||
#include "DHT11.h"
|
#include "DHT11.h"
|
||||||
// #include "USART3.h"
|
|
||||||
#include "USART.h"
|
#include "USART.h"
|
||||||
#include "LoRa.h"
|
#include "LoRa.h"
|
||||||
#include "Relay.h"
|
#include "Relay.h"
|
||||||
@@ -183,7 +182,7 @@ void vTaskLoRaMsgRec(void *pvParameters)
|
|||||||
void vCreateTasksList(void)
|
void vCreateTasksList(void)
|
||||||
{
|
{
|
||||||
// #if defined __LED_H__
|
// #if defined __LED_H__
|
||||||
#if LED_PC13_WORK_MODE == LED_PC13_STM32_STATE_MODE
|
#if LED_PC13_WORK_MODE == STM32_STATE_MODE
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB2><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ջ<EFBFBD><D5BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB2><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ջ<EFBFBD><D5BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
xTaskCreate(
|
xTaskCreate(
|
||||||
(TaskFunction_t ) vTaskStateLed,
|
(TaskFunction_t ) vTaskStateLed,
|
||||||
|
|||||||
80
STM32/Gateway_Node/Application/NetFIFO/NetFIFO.c
Normal file
80
STM32/Gateway_Node/Application/NetFIFO/NetFIFO.c
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#include "NetFIFO.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @param pBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void vNetBufferInit(NetFifoBuffer_t *pxBuffer)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL) return;
|
||||||
|
memset(pxBuffer->cResponseBuffer, 0, sizeof(pxBuffer->cResponseBuffer));
|
||||||
|
pxBuffer->ucBufferIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><EFBFBD><F2BBBAB3><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @param pxBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @param cData: Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void vNetBufferWrite(NetFifoBuffer_t *pxBuffer, char cData)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL) return;
|
||||||
|
if (pxBuffer->ucBufferIndex < sizeof(pxBuffer->cResponseBuffer) - 1)
|
||||||
|
{
|
||||||
|
pxBuffer->cResponseBuffer[pxBuffer->ucBufferIndex++] = cData;
|
||||||
|
pxBuffer->cResponseBuffer[pxBuffer->ucBufferIndex] = '\0'; // ȷ<><C8B7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ֹ
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||||
|
* @param pxBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @param index: Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @retval <20><>ȡ<EFBFBD><C8A1><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чʱ<D0A7><CAB1><EFBFBD><EFBFBD>'\0'
|
||||||
|
*/
|
||||||
|
char cNetBufferReadByte(NetFifoBuffer_t *pxBuffer, int index)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL) return '\0';
|
||||||
|
if (index < 0 || index >= pxBuffer->ucBufferIndex)
|
||||||
|
{
|
||||||
|
return '\0'; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||||
|
}
|
||||||
|
return pxBuffer->cResponseBuffer[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20>Ƚϻ<C8BD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
* @param pxBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @param pcStr: Ҫ<>Ƚϵ<C8BD><CFB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
* @retval true: ƥ<><C6A5><EFBFBD>ɹ<EFBFBD>, false: ƥ<><C6A5>ʧ<EFBFBD><CAA7>
|
||||||
|
*/
|
||||||
|
bool bNetBufferCompareStr(NetFifoBuffer_t *pxBuffer, const char *pcStr)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL || pcStr == NULL) return false;
|
||||||
|
return (strstr(pxBuffer->cResponseBuffer, pcStr) != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||||
|
* @param pxBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
int iNetBufferGetLength(NetFifoBuffer_t *pxBuffer)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL) return 0;
|
||||||
|
return pxBuffer->ucBufferIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @param pxBuffer: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void vNetBufferClear(NetFifoBuffer_t *pxBuffer)
|
||||||
|
{
|
||||||
|
if (pxBuffer == NULL) return;
|
||||||
|
memset(pxBuffer->cResponseBuffer, 0, sizeof(pxBuffer->cResponseBuffer));
|
||||||
|
pxBuffer->ucBufferIndex = 0;
|
||||||
|
}
|
||||||
23
STM32/Gateway_Node/Application/NetFIFO/NetFIFO.h
Normal file
23
STM32/Gateway_Node/Application/NetFIFO/NetFIFO.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef __NETFIFO_H__
|
||||||
|
#define __NETFIFO_H__ 1
|
||||||
|
|
||||||
|
#include "stm32f10x.h"
|
||||||
|
#include "stdio.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "stdbool.h"
|
||||||
|
#include "stdlib.h"
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char cResponseBuffer[1024];
|
||||||
|
uint8_t ucBufferIndex;
|
||||||
|
}NetFifoBuffer_t;
|
||||||
|
|
||||||
|
void vNetBufferInit(NetFifoBuffer_t *pxBuffer);
|
||||||
|
void vNetBufferWrite(NetFifoBuffer_t *pxBuffer, char cData);
|
||||||
|
char cNetBufferReadByte(NetFifoBuffer_t *pxBuffer, int index);
|
||||||
|
bool bNetBufferCompareStr(NetFifoBuffer_t *pxBuffer, const char *pcStr);
|
||||||
|
int iNetBufferGetLength(NetFifoBuffer_t *pxBuffer);
|
||||||
|
void vNetBufferClear(NetFifoBuffer_t *pxBuffer);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1 +1,58 @@
|
|||||||
#include "ESP8266.h"
|
#include "ESP8266.h"
|
||||||
|
|
||||||
|
void vEsp8266Restore(void)
|
||||||
|
{
|
||||||
|
vUsartPrintf(USART2, "AT+RESTORE\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void vEsp8266Reset(void)
|
||||||
|
{
|
||||||
|
vUsartPrintf(USART2, "AT+RST\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ucEsp8266SetMode(uint8_t ucMode)
|
||||||
|
{
|
||||||
|
vUsartPrintf(USART2, "AT+CWMODE=%d\r\n", ucMode);
|
||||||
|
if (ucMode == 1)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
return ESP8266_MODE_STATION;
|
||||||
|
} else if (ucMode == 0)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
return ESP8266_MODE_SOFTAP;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
return 0xFF; // <20><>Чģʽ
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vEsp8266JoinAp(const char *pcSsid, const char *pcPassword)
|
||||||
|
{
|
||||||
|
vUsartPrintf(USART2, "AT+CWJAP=\"%s\",\"%s\"\r\n", pcSsid, pcPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><><EFBFBD><EFBFBD>ESP8266<36><36>Ӧ
|
||||||
|
* @param *pxEspBuffer ESP8266<36><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval 0: <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>, 1: <20>ɹ<EFBFBD>, 2: ʧ<><CAA7>
|
||||||
|
*/
|
||||||
|
uint8_t ucEsp8266ResponseHandler(NetFifoBuffer_t *pxEspBuffer)
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
||||||
|
if (strstr(pxEspBuffer->cResponseBuffer, "ready") != NULL)
|
||||||
|
{
|
||||||
|
return 1; // <20>ɹ<EFBFBD>
|
||||||
|
}
|
||||||
|
else if (strstr(pxEspBuffer->cResponseBuffer, "OK") != NULL)
|
||||||
|
{
|
||||||
|
return 1; // <20>ɹ<EFBFBD>
|
||||||
|
}
|
||||||
|
else if (strstr(pxEspBuffer->cResponseBuffer, "ERROR") != NULL ||
|
||||||
|
strstr(pxEspBuffer->cResponseBuffer, "FAIL") != NULL)
|
||||||
|
{
|
||||||
|
return 2; // ʧ<><CAA7>
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0; // <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
#ifndef __ESP8266_H__
|
#ifndef __ESP8266_H__
|
||||||
#define __ESP8266_H__
|
#define __ESP8266_H__
|
||||||
|
|
||||||
|
#include "string.h"
|
||||||
|
#include "stdbool.h"
|
||||||
|
#include "USART.h"
|
||||||
|
#include "NetFIFO.h"
|
||||||
|
|
||||||
|
#define ESP8266_MODE_STATION 0
|
||||||
|
#define ESP8266_MODE_SOFTAP 1
|
||||||
|
|
||||||
|
void vEsp8266Restore(void);
|
||||||
|
void vEsp8266Reset(void);
|
||||||
|
uint8_t ucEsp8266SetMode(uint8_t ucMode);
|
||||||
|
void vEsp8266JoinAp(const char *pcSsid, const char *pcPassword);
|
||||||
|
uint8_t ucEsp8266ResponseHandler(NetFifoBuffer_t *pxEspBuffer);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -39,20 +39,20 @@
|
|||||||
* See http://www.freertos.org/a00110.html
|
* See http://www.freertos.org/a00110.html
|
||||||
*----------------------------------------------------------*/
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configUSE_IDLE_HOOK 0
|
#define configUSE_IDLE_HOOK 0
|
||||||
#define configUSE_TICK_HOOK 0
|
#define configUSE_TICK_HOOK 0
|
||||||
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )
|
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )
|
||||||
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( 5 )
|
#define configMAX_PRIORITIES ( 5 )
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 16 )
|
#define configMAX_TASK_NAME_LEN ( 16 )
|
||||||
#define configUSE_TRACE_FACILITY 0
|
#define configUSE_TRACE_FACILITY 0
|
||||||
/* ϵͳ<CFB5><CDB3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1<EFBFBD><31>ʾΪ16λ<36><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>0<EFBFBD><30>ʾΪ32λ<32><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* ϵͳ<CFB5><CDB3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1<EFBFBD><31>ʾΪ16λ<36><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>0<EFBFBD><30>ʾΪ32λ<32><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#define configUSE_16_BIT_TICKS 0
|
||||||
/* 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPUʹ<55><CAB9>Ȩ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>1 */
|
/* 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPUʹ<55><CAB9>Ȩ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>1 */
|
||||||
#define configIDLE_SHOULD_YIELD 1
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
/* <20><><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD> */
|
/* <20><><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD> */
|
||||||
/* ʱ<><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬʱִ<CAB1><D6B4> */
|
/* ʱ<><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬʱִ<CAB1><D6B4> */
|
||||||
#define configUSE_TIME_SLICING 1
|
#define configUSE_TIME_SLICING 1
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -149,6 +149,13 @@
|
|||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint/>
|
<Breakpoint/>
|
||||||
|
<WatchWindow1>
|
||||||
|
<Ww>
|
||||||
|
<count>0</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>responseBuffer</ItemText>
|
||||||
|
</Ww>
|
||||||
|
</WatchWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
@@ -293,7 +300,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User</GroupName>
|
<GroupName>User</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -909,7 +916,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>System</GroupName>
|
<GroupName>System</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -965,7 +972,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers</GroupName>
|
<GroupName>Drivers</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1361,7 +1368,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>FreeRTOS/portable</GroupName>
|
<GroupName>FreeRTOS/portable</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1423,4 +1430,36 @@
|
|||||||
</File>
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>Application/NetFIFO</GroupName>
|
||||||
|
<tvExp>1</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>10</GroupNumber>
|
||||||
|
<FileNumber>96</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>.\Application\NetFIFO\NetFIFO.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>NetFIFO.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>10</GroupNumber>
|
||||||
|
<FileNumber>97</FileNumber>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>.\Application\NetFIFO\NetFIFO.h</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>NetFIFO.h</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
</ProjectOpt>
|
</ProjectOpt>
|
||||||
|
|||||||
@@ -341,7 +341,7 @@
|
|||||||
<MiscControls>--no-multibyte-chars</MiscControls>
|
<MiscControls>--no-multibyte-chars</MiscControls>
|
||||||
<Define>USE_STDPERIPH_DRIVER</Define>
|
<Define>USE_STDPERIPH_DRIVER</Define>
|
||||||
<Undefine></Undefine>
|
<Undefine></Undefine>
|
||||||
<IncludePath>.\SystemFiles;.\Libraries\inc;.\User;.\System;.\Drivers;.\FreeRTOS\inc;.\FreeRTOS\portable\RVDS\ARM_CM3;.\FreeRTOS\config</IncludePath>
|
<IncludePath>.\SystemFiles;.\Libraries\inc;.\User;.\System;.\Drivers;.\FreeRTOS\inc;.\FreeRTOS\portable\RVDS\ARM_CM3;.\FreeRTOS\config;.\Application\NetFIFO</IncludePath>
|
||||||
</VariousControls>
|
</VariousControls>
|
||||||
</Cads>
|
</Cads>
|
||||||
<Aads>
|
<Aads>
|
||||||
@@ -902,6 +902,21 @@
|
|||||||
</File>
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Application/NetFIFO</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>NetFIFO.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\Application\NetFIFO\NetFIFO.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>NetFIFO.h</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>.\Application\NetFIFO\NetFIFO.h</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
</Groups>
|
</Groups>
|
||||||
</Target>
|
</Target>
|
||||||
</Targets>
|
</Targets>
|
||||||
|
|||||||
@@ -29,17 +29,10 @@ void vDelayUs(uint32_t ulNus)
|
|||||||
SysTick->VAL =0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
SysTick->VAL =0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
|
|
||||||
//<2F><>ʱnms
|
|
||||||
//ע<><D7A2>nms<6D>ķ<EFBFBD>Χ
|
|
||||||
//SysTick->LOADΪ24λ<34>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱΪ:
|
|
||||||
//nms<=0xffffff*8*1000/SYSCLK
|
|
||||||
//SYSCLK<4C><4B>λΪHz,nms<6D><73>λΪms
|
|
||||||
//<2F><>72M<32><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,nms<=1864
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief <20><><EFBFBD>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
* @brief <20><><EFBFBD>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||||
* @note <20><><EFBFBD><EFBFBD>Systick<63><6B>ʱ<EFBFBD><CAB1>Ϊ24λ<34><CEBB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵΪ0xFFFFFF<46><46>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>16777215<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0xFFFFFF<46><46><EFBFBD><EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><CABC>ص<EFBFBD>ֵ<EFBFBD><D6B5>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD>
|
* @note <20><><EFBFBD><EFBFBD>Systick<63><6B>ʱ<EFBFBD><CAB1>Ϊ24λ<34><CEBB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵΪ0xFFFFFF<46><46>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>16777215<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0xFFFFFF<46><46><EFBFBD><EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><CABC>ص<EFBFBD>ֵ<EFBFBD><D6B5>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>
|
||||||
* <20><><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>1.864s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ᵼ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ʱΪxms-16777215<31>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>
|
* usNms<=0xFFFFFF*8*1000/SYSCLK<4C><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>72M<32><4D><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.864s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ᵼ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ʱΪxms-16777215<31>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* @note <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD>Ƿ<C7B7><F1B3ACB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳɶ<D6B3><C9B6><EFBFBD>1000ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* @note <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD>Ƿ<C7B7><F1B3ACB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳɶ<D6B3><C9B6><EFBFBD>1000ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* @param None
|
* @param None
|
||||||
* @retval None
|
* @retval None
|
||||||
@@ -68,14 +61,9 @@ void vDelayMs(uint16_t usNms)
|
|||||||
|
|
||||||
void vDelayInit(void)
|
void vDelayInit(void)
|
||||||
{
|
{
|
||||||
//ʹ<><CAB9>DWT<57><54><EFBFBD><EFBFBD>
|
DEMCR |= (uint32_t)TRCENA; // ʹ<EFBFBD><EFBFBD>DWT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
DEMCR |= (uint32_t)TRCENA;
|
DWT_CYCCNT = (uint32_t)0u; // DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||||
|
DWT_CTRL |= (uint32_t)DWT_CTRL_CYCCNTENA; // ʹ<><CAB9>Cortex-M3 DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
//DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|
||||||
DWT_CYCCNT = (uint32_t)0u;
|
|
||||||
|
|
||||||
//ʹ<><CAB9>Cortex-M3 DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|
||||||
DWT_CTRL |= (uint32_t)DWT_CTRL_CYCCNTENA;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// <><CEA2><EFBFBD><EFBFBD>ʱ
|
// <><CEA2><EFBFBD><EFBFBD>ʱ
|
||||||
@@ -89,19 +77,16 @@ void vDelayUs(uint32_t ulNus)
|
|||||||
ulTicksDelay = ( ulNus * ( SystemCoreClock / (1000000) ) ); // <20><><EFBFBD><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵδ<C9B5><CEB4><EFBFBD>
|
ulTicksDelay = ( ulNus * ( SystemCoreClock / (1000000) ) ); // <20><><EFBFBD><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵδ<C9B5><CEB4><EFBFBD>
|
||||||
ulTicksEnd = ulTicksStart + ulTicksDelay;
|
ulTicksEnd = ulTicksStart + ulTicksDelay;
|
||||||
|
|
||||||
// ulTicksEndû<64><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if ( ulTicksEnd >= ulTicksStart ) // ulTicksEndû<64><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
if ( ulTicksEnd >= ulTicksStart )
|
|
||||||
{
|
{
|
||||||
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(DWT_CYCCNT > ulTicksStart) // DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
if(DWT_CYCCNT > ulTicksStart)
|
|
||||||
{
|
{
|
||||||
while( DWT_CYCCNT < ulTicksEnd );
|
while( DWT_CYCCNT < ulTicksEnd );
|
||||||
}
|
}
|
||||||
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>
|
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// <20>Ѿ<EFBFBD><D1BE><EFBFBD>ʱ<EFBFBD><CAB1>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
return; // <20>Ѿ<EFBFBD><D1BE><EFBFBD>ʱ<EFBFBD><CAB1>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // ulTicksEnd<6E><64><EFBFBD><EFBFBD>
|
else // ulTicksEnd<6E><64><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -12,21 +12,21 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
if (xUsartId == USART1)
|
if (xUsartId == USART1)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
|
RCC_APB2PeriphClockCmd(USART1_GPIO_CLOCK, ENABLE);
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
|
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
||||||
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
||||||
@@ -34,13 +34,13 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
||||||
USART_Init(USART1,&USART_InitStructure);
|
USART_Init(USART1,&USART_InitStructure);
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
||||||
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||||
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
|
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
|
||||||
|
|
||||||
@@ -48,27 +48,27 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
} else if (xUsartId == USART2)
|
} else if (xUsartId == USART2)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
|
RCC_APB2PeriphClockCmd(USART2_GPIO_CLOCK,ENABLE);
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
|
||||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
||||||
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
||||||
USART_InitStructure.USART_StopBits = USART_StopBits_1; // һλֹͣλ
|
USART_InitStructure.USART_StopBits = USART_StopBits_1; // һλֹͣλ
|
||||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
||||||
USART_Init(USART2,&USART_InitStructure);
|
USART_Init(USART2, &USART_InitStructure);
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
||||||
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||||
@@ -82,16 +82,16 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
} else if (xUsartId == USART3)
|
} else if (xUsartId == USART3)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
|
RCC_APB2PeriphClockCmd(USART3_GPIO_CLOCK,ENABLE);
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
|
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART3_GPIO_PORT, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
|
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(USART3_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
@@ -109,7 +109,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||||
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6; // <20><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڷ<EFBFBD>Χ<EFBFBD>ڿ<EFBFBD><DABF>Ե<EFBFBD><D4B5><EFBFBD>FreeRTOS<4F><53><EFBFBD>ԡ<EFBFBD>FromISR()<29><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>api<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
|
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
|
||||||
|
|
||||||
@@ -220,13 +220,13 @@ void USART1_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_RTOS == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_RTOS == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
@@ -244,13 +244,28 @@ void USART2_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_RTOS == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
// xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
|
// if (xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken) != pdTRUE)
|
||||||
|
// {
|
||||||
|
// /* code */
|
||||||
|
// vUsartSendString(USART3, "Queue Init Failed!");
|
||||||
|
// }
|
||||||
|
// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||||
|
if(xQueueUsart2IrqHdlr != NULL) {
|
||||||
|
if (xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken) != pdTRUE) {
|
||||||
|
// <20><><EFBFBD>з<EFBFBD><D0B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
||||||
|
vUsartSendString(USART3, "Queue Full or Error!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vUsartSendString(USART3, "Queue Not Initialized!");
|
||||||
|
}
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_RTOS == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
@@ -268,13 +283,13 @@ void USART3_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_RTOS == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
#elif (USE_OSAL == 1)
|
#elif (USE_RTOS == OSAL)
|
||||||
#endif
|
#endif
|
||||||
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
#ifndef __USART_H__
|
#ifndef __USART_H__
|
||||||
#define __USART_H__
|
#define __USART_H__
|
||||||
|
|
||||||
#define USE_NONE_SYSTEM 0
|
#define USE_RTOS FREERTOS
|
||||||
#define USE_FREERTOS 1
|
#define NONE 0
|
||||||
#define USE_OSAL 0
|
#define FREERTOS 1
|
||||||
#define vUsart1IrqHandler USART1_IRQHandler
|
#define vUsart1IrqHandler USART1_IRQHandler
|
||||||
#define vEsp8266IrqHandler USART2_IRQHandler
|
#define vEsp8266IrqHandler USART2_IRQHandler
|
||||||
#define vLoRaIrqHandler USART3_IRQHandler
|
#define vLoRaIrqHandler USART3_IRQHandler
|
||||||
|
#define USART1_GPIO_CLOCK RCC_APB2Periph_GPIOA
|
||||||
|
#define USART2_GPIO_CLOCK RCC_APB2Periph_GPIOA
|
||||||
|
#define USART3_GPIO_CLOCK RCC_APB2Periph_GPIOB
|
||||||
|
#define USART1_GPIO_PORT GPIOA
|
||||||
|
#define USART2_GPIO_PORT GPIOA
|
||||||
|
#define USART3_GPIO_PORT GPIOB
|
||||||
#define USART1_GPIO_PIN_TX GPIO_Pin_9
|
#define USART1_GPIO_PIN_TX GPIO_Pin_9
|
||||||
#define USART1_GPIO_PIN_RX GPIO_Pin_10
|
#define USART1_GPIO_PIN_RX GPIO_Pin_10
|
||||||
#define USART2_GPIO_PIN_TX GPIO_Pin_2
|
#define USART2_GPIO_PIN_TX GPIO_Pin_2
|
||||||
@@ -14,24 +20,23 @@
|
|||||||
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
||||||
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
||||||
|
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_RTOS == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#elif (USE_OSAL == 1)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "stm32f10x.h" // Device header
|
#include "stm32f10x.h" // Device header
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if (USE_NONE_SYSTEM == 1)
|
#if (USE_RTOS == NONE)
|
||||||
#elif (USE_FREERTOS == 1)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
||||||
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
||||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||||
#elif (USE_OSAL == 1)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include "Delay.h"
|
#include "Delay.h"
|
||||||
#include "USART.h"
|
#include "USART.h"
|
||||||
#include "LED.h"
|
#include "LED.h"
|
||||||
|
#include "ESP8266.h"
|
||||||
|
#include "NetFIFO.h"
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD>֤<EFBFBD>ĸĶ<C4B8><C4B6><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ڡ<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD>֤<EFBFBD>ĸĶ<C4B8><C4B6><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ڡ<EFBFBD> */
|
||||||
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */
|
||||||
@@ -21,6 +23,12 @@ QueueHandle_t xQueueUsart3IrqHdlr;
|
|||||||
SemaphoreHandle_t xSemWifiRetOkHdlr;
|
SemaphoreHandle_t xSemWifiRetOkHdlr;
|
||||||
SemaphoreHandle_t xSemWifiRetErrHdlr;
|
SemaphoreHandle_t xSemWifiRetErrHdlr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ״ָ̬ʾLED<45><44><EFBFBD><EFBFBD>
|
||||||
|
* @note ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC13<31><33><EFBFBD>ŵ<EFBFBD>LED<45>ƣ<EFBFBD>ʵ<EFBFBD><CAB5>ϵͳ״̬<D7B4><CCAC>ָʾ<D6B8><CABE><EFBFBD>ܡ<EFBFBD>
|
||||||
|
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
void vTaskStateLed(void *pvParameters)
|
void vTaskStateLed(void *pvParameters)
|
||||||
{
|
{
|
||||||
@@ -28,37 +36,62 @@ void vTaskStateLed(void *pvParameters)
|
|||||||
{
|
{
|
||||||
vPc13LedOn();
|
vPc13LedOn();
|
||||||
vTaskDelay(1000);
|
vTaskDelay(1000);
|
||||||
vUsartPrintf(USART3, "USART3 Printf Test %d\r\n", 123);
|
|
||||||
vPc13LedOff();
|
vPc13LedOff();
|
||||||
vTaskDelay(1000);
|
vTaskDelay(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD><EFBFBD>
|
||||||
|
* @note <20><><EFBFBD><EFBFBD>FreeRTOS<4F>ж<EFBFBD><D0B6><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>л<EFBFBD><D0BB>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>ESP8266<36><36><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ݴ浽<DDB4><E6B5BD><EFBFBD>õ<EFBFBD>FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||||
|
* @note <20><><EFBFBD>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD>쵽һ<ECB5BD><D2BB><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ࡣ
|
||||||
|
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
void vTaskWifiConnection(void *pvParameters)
|
void vTaskWifiConnection(void *pvParameters)
|
||||||
{
|
{
|
||||||
uint8_t ucRetvalQueueWifiSt = 0;
|
NetFifoBuffer_t espBuffer;
|
||||||
uint8_t ucBufferQueueRec = 0;
|
vNetBufferInit(&espBuffer);
|
||||||
vUsartPrintf(USART2, "AT+RST\r\n");
|
uint8_t ucRetvalQueueWifiSta = 0;
|
||||||
vTaskDelay(1000);
|
uint8_t ucRetvalQueueByte = 0;
|
||||||
vUsartPrintf(USART2, "AT+CWMODE=1\r\n");
|
while (1)
|
||||||
vTaskDelay(1000);
|
{
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD> */
|
/* code */
|
||||||
vUsartPrintf(USART2, "AT+CWJAP=\"Exploration\",\"IPSK25em.\"\r\n");
|
ucEsp8266SetMode(1);
|
||||||
while (1)
|
TickType_t startTime = xTaskGetTickCount();
|
||||||
{
|
while ((xTaskGetTickCount() - startTime) < pdMS_TO_TICKS(3000))
|
||||||
|
{
|
||||||
ucRetvalQueueWifiSt = xQueueReceive(xQueueUsart2IrqHdlr, &ucBufferQueueRec, pdMS_TO_TICKS(30));
|
ucRetvalQueueWifiSta = xQueueReceive(xQueueUsart2IrqHdlr,
|
||||||
/* code */
|
&ucRetvalQueueByte,
|
||||||
if (ucRetvalQueueWifiSt == pdTRUE)
|
pdMS_TO_TICKS(100));
|
||||||
{
|
if (ucRetvalQueueWifiSta == pdTRUE)
|
||||||
/* code */
|
{
|
||||||
vUsartPrintf(USART3, (char *)&ucBufferQueueRec);
|
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
vNetBufferWrite(&espBuffer, (char)ucRetvalQueueByte);
|
||||||
else
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||||
{
|
uint8_t ucResponseStatus = ucEsp8266ResponseHandler(&espBuffer);
|
||||||
vUsartSendString(USART3, "Queue Receive failed!\r\n");
|
if (strstr(espBuffer.cResponseBuffer, "ready") != NULL)
|
||||||
vTaskDelay(300);
|
{
|
||||||
|
vUsartSendString(USART3, "WiFi Reset Successfully!\r\n");
|
||||||
|
vUsartSendString(USART3, espBuffer.cResponseBuffer);
|
||||||
|
vTaskDelay(1000);
|
||||||
|
break;
|
||||||
|
} else if (strstr(espBuffer.cResponseBuffer, "OK") != NULL)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART3, "Set WiFi Mode Successfully!\r\n");
|
||||||
|
vUsartSendString(USART3, espBuffer.cResponseBuffer);
|
||||||
|
} else if (strstr(espBuffer.cResponseBuffer, "ERROR") != NULL ||
|
||||||
|
strstr(espBuffer.cResponseBuffer, "FAIL") != NULL)
|
||||||
|
{
|
||||||
|
vUsartSendString(USART3, "Error!\r\n");
|
||||||
|
vUsartSendString(USART3, espBuffer.cResponseBuffer);
|
||||||
|
vUsartSendString(USART3, "\r\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,17 +119,23 @@ void vCreateQueuesList(void)
|
|||||||
(UBaseType_t) 64,
|
(UBaseType_t) 64,
|
||||||
(UBaseType_t) sizeof(uint8_t *));
|
(UBaseType_t) sizeof(uint8_t *));
|
||||||
xQueueUsart2IrqHdlr = xQueueCreate(
|
xQueueUsart2IrqHdlr = xQueueCreate(
|
||||||
(UBaseType_t) 64,
|
(UBaseType_t) 1024,
|
||||||
(UBaseType_t) sizeof(uint8_t *));
|
(UBaseType_t) sizeof(char *));
|
||||||
xQueueUsart3IrqHdlr = xQueueCreate(
|
xQueueUsart3IrqHdlr = xQueueCreate(
|
||||||
(UBaseType_t) 64,
|
(UBaseType_t) 64,
|
||||||
(UBaseType_t) sizeof(uint8_t *));
|
(UBaseType_t) sizeof(uint8_t *));
|
||||||
|
if (xQueueUsart2IrqHdlr == NULL)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "Queue Init Failed.\r\n");
|
||||||
|
vTaskDelay(1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vCreateSemaphoresList(void)
|
void vCreateSemaphoresList(void)
|
||||||
{
|
{
|
||||||
xSemWifiRetOkHdlr = xSemaphoreCreateBinary();
|
xSemWifiRetOkHdlr = xSemaphoreCreateBinary();
|
||||||
xSemWifiRetErrHdlr = xSemaphoreCreateBinary();
|
xSemWifiRetErrHdlr = xSemaphoreCreateBinary();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
|||||||
Reference in New Issue
Block a user