20260115:初步实现了MQTT协议发布指令的功能;完善了部分任务之间的运行逻辑。
This commit is contained in:
File diff suppressed because one or more lines are too long
3691
STM32/Environment_Node/STM32Template.uvguix_Exploration.bak
Normal file
3691
STM32/Environment_Node/STM32Template.uvguix_Exploration.bak
Normal file
File diff suppressed because one or more lines are too long
@@ -320,7 +320,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User</GroupName>
|
<GroupName>User</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>
|
||||||
@@ -936,7 +936,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>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
|
|
||||||
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_APB2PeriphClockCmd(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>
|
||||||
|
USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><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 = 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>ַ
|
||||||
|
|
||||||
@@ -68,7 +68,8 @@ 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(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>
|
||||||
|
USART_ITConfig(USART2, USART_IT_IDLE, ENABLE); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><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>
|
||||||
@@ -103,8 +104,8 @@ 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(USART3, &USART_InitStructure);
|
USART_Init(USART3, &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(USART3, 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(USART3, 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(USART3, USART_IT_IDLE, ENABLE); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><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 = USART3_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // <20>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
@@ -172,7 +173,7 @@ void vUsartSendString(USART_TypeDef *xUsartId, char *pcString)
|
|||||||
*/
|
*/
|
||||||
void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...)
|
void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...)
|
||||||
{
|
{
|
||||||
char cBuffer[100];
|
char cBuffer[1024];
|
||||||
va_list arg; // arg<72>Ƕ<EFBFBD><C7B6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
va_list arg; // arg<72>Ƕ<EFBFBD><C7B6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
||||||
va_start(arg, format); // <20><>formatλ<74>ÿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>arg<72><67><EFBFBD><EFBFBD>
|
va_start(arg, format); // <20><>formatλ<74>ÿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>arg<72><67><EFBFBD><EFBFBD>
|
||||||
vsprintf(cBuffer, format, arg); // <20><>װ<EFBFBD><D7B0>ʽҪ<CABD><D2AA>vsprintf<74><66><EFBFBD><EFBFBD>Ϊsprintfֻ<66>ܽ<EFBFBD><DCBD><EFBFBD>ֱ<EFBFBD><D6B1>д<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>format<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>arg<72><67>
|
vsprintf(cBuffer, format, arg); // <20><>װ<EFBFBD><D7B0>ʽҪ<CABD><D2AA>vsprintf<74><66><EFBFBD><EFBFBD>Ϊsprintfֻ<66>ܽ<EFBFBD><DCBD><EFBFBD>ֱ<EFBFBD><D6B1>д<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>format<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>arg<72><67>
|
||||||
@@ -216,19 +217,22 @@ void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...)
|
|||||||
*/
|
*/
|
||||||
void USART1_IRQHandler(void)
|
void USART1_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
|
/* code */
|
||||||
{
|
#if (USE_RTOS == NONE)
|
||||||
/* code */
|
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
|
||||||
#if (USE_RTOS == NONE)
|
if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
|
||||||
#elif (USE_RTOS == FREERTOS)
|
{
|
||||||
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART1);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ucRxData, &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);
|
||||||
#endif
|
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||||
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
}
|
||||||
}
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 0)
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -239,19 +243,22 @@ void USART1_IRQHandler(void)
|
|||||||
*/
|
*/
|
||||||
void USART2_IRQHandler(void)
|
void USART2_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
|
#if (USE_RTOS == NONE && defined __ESP8266_SAMPLE_H__)
|
||||||
{
|
|
||||||
/* code */
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1)
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
|
||||||
#if (USE_RTOS == NONE)
|
{
|
||||||
#elif (USE_RTOS == FREERTOS)
|
/* code */
|
||||||
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART2);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ucRxData, &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);
|
||||||
#endif
|
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
||||||
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
}
|
||||||
}
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 0)
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -262,17 +269,19 @@ void USART2_IRQHandler(void)
|
|||||||
*/
|
*/
|
||||||
void USART3_IRQHandler(void)
|
void USART3_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
|
#if (USE_RTOS == NONE)
|
||||||
{
|
|
||||||
/* code */
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART3_IRQ == 1)
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
|
||||||
#if (USE_RTOS == NONE)
|
{
|
||||||
#elif (USE_RTOS == FREERTOS)
|
/* code */
|
||||||
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ucRxData, &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);
|
||||||
#endif
|
}
|
||||||
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART3_IRQ == 0)
|
||||||
}
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
#ifndef __USART_H__
|
#ifndef __USART_H__
|
||||||
#define __USART_H__
|
#define __USART_H__
|
||||||
|
|
||||||
#define USE_RTOS FREERTOS
|
/* <20>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>RTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<D2AA><CAB9>RTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ϵͳ<CFB5><CDB3>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>RTOS<4F><53><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNONE<4E><45> */
|
||||||
|
#define USE_RTOS FREERTOS
|
||||||
#define NONE 0
|
#define NONE 0
|
||||||
#define FREERTOS 1
|
#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
|
||||||
@@ -22,9 +23,13 @@
|
|||||||
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
||||||
|
|
||||||
#if (USE_RTOS == NONE)
|
#if (USE_RTOS == NONE)
|
||||||
|
|
||||||
#elif (USE_RTOS == FREERTOS)
|
#elif (USE_RTOS == FREERTOS)
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
#define ENABLE_FREERTOS_API_QUEUE_USART1_IRQ 0
|
||||||
|
#define ENABLE_FREERTOS_API_QUEUE_USART2_IRQ 0
|
||||||
|
#define ENABLE_FREERTOS_API_QUEUE_USART3_IRQ 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "stm32f10x.h" // Device header
|
#include "stm32f10x.h" // Device header
|
||||||
@@ -32,13 +37,33 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if (USE_RTOS == NONE)
|
#if (ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
|
||||||
#elif (USE_RTOS == FREERTOS)
|
|
||||||
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
||||||
|
#endif
|
||||||
|
#if (ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1)
|
||||||
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
||||||
|
#endif
|
||||||
|
#if (ENABLE_FREERTOS_API_QUEUE_USART3_IRQ == 1)
|
||||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern volatile uint8_t ucTcpClosedFlag;
|
||||||
|
|
||||||
|
#define BUFFER_MAX_LENGTH 1024 // <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||||
|
extern struct SerialFrame_t // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||||
|
{
|
||||||
|
char cSerialReceivedBuffer [ BUFFER_MAX_LENGTH ];
|
||||||
|
union
|
||||||
|
{
|
||||||
|
__IO uint16_t usInfoAll;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
__IO uint16_t usFrameLength :15; // 14:0
|
||||||
|
__IO uint16_t usFrameFinishFlag :1; // 15
|
||||||
|
} Bits_t;
|
||||||
|
};
|
||||||
|
} xSerialFrameRecord;
|
||||||
|
|
||||||
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
||||||
void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte);
|
void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte);
|
||||||
void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength);
|
void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength);
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ void vTaskDht11(void *pvParameters)
|
|||||||
xQueueSend(xQueueHumiHdlr, &ucSendHumiData, pdMS_TO_TICKS(10));
|
xQueueSend(xQueueHumiHdlr, &ucSendHumiData, pdMS_TO_TICKS(10));
|
||||||
}
|
}
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
if (vDht11ReadData(&xDHT11Data.ucTemp,&xDHT11Data.ucHumi) == 0)
|
if (vDht11ReadData(&xDHT11Data.ucTemp,&xDHT11Data.ucHumi) == 0)
|
||||||
{
|
{
|
||||||
@@ -137,6 +137,7 @@ void vTaskDht11(void *pvParameters)
|
|||||||
*/
|
*/
|
||||||
void vTaskLoRaToGatePkt(void *pvParameters)
|
void vTaskLoRaToGatePkt(void *pvParameters)
|
||||||
{
|
{
|
||||||
|
char cBuffer[50];
|
||||||
uint8_t ucRecTempData = 0, ucRecHumiData = 0;
|
uint8_t ucRecTempData = 0, ucRecHumiData = 0;
|
||||||
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ճɹ<D5B3> */
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ճɹ<D5B3> */
|
||||||
BaseType_t xRetvalQueueTemp, xRetvalQueueHumi;
|
BaseType_t xRetvalQueueTemp, xRetvalQueueHumi;
|
||||||
@@ -158,6 +159,9 @@ void vTaskLoRaToGatePkt(void *pvParameters)
|
|||||||
/* code */
|
/* code */
|
||||||
vUsartSendArray(USART3, &ucRecTempData, 1);
|
vUsartSendArray(USART3, &ucRecTempData, 1);
|
||||||
vUsartSendArray(USART3, &ucRecHumiData, 1);
|
vUsartSendArray(USART3, &ucRecHumiData, 1);
|
||||||
|
snprintf(cBuffer, sizeof(cBuffer), "Temp=%d, Humi=%d\r\n", ucRecTempData, ucRecHumiData);
|
||||||
|
vUsartSendString(USART1, cBuffer);
|
||||||
|
vTaskDelay(1000);
|
||||||
}
|
}
|
||||||
if (xSemaphoreTake(xSemLedOnHdlr, pdMS_TO_TICKS(10)) == pdTRUE)
|
if (xSemaphoreTake(xSemLedOnHdlr, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||||
{
|
{
|
||||||
@@ -301,7 +305,7 @@ void vCreateQueuesList(void)
|
|||||||
if (xQueueTempHdlr == NULL || xQueueHumiHdlr == NULL || xQueueUsart3IrqHdlr == NULL)
|
if (xQueueTempHdlr == NULL || xQueueHumiHdlr == NULL || xQueueUsart3IrqHdlr == NULL)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
vUsartPrintf(USART3, "Queue Init Failed.\r\n");
|
vUsartPrintf(USART1, "Queue Init Failed.\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +334,7 @@ int main(void)
|
|||||||
vFanRelayInit();
|
vFanRelayInit();
|
||||||
vDelayInit();
|
vDelayInit();
|
||||||
vPc13LedInit();
|
vPc13LedInit();
|
||||||
|
vUsartInit(USART1, 115200);
|
||||||
vUsartInit(USART3, 115200);
|
vUsartInit(USART3, 115200);
|
||||||
vCreateQueuesList();
|
vCreateQueuesList();
|
||||||
vCreateSemaphoresList();
|
vCreateSemaphoresList();
|
||||||
|
|||||||
9
STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c
Normal file
9
STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#include "App_MQTT.h"
|
||||||
|
|
||||||
|
bool bMqttNormalSubscribe(char *pcTopic, char *pcMessage)
|
||||||
|
{
|
||||||
|
char cCmd[256] = {0};
|
||||||
|
snprintf(cCmd, sizeof(cCmd), "AT+MQTT_SUBSCRIBE=\"%s\",\"%s\"", pcTopic, pcMessage);
|
||||||
|
// Add logic to send the command and handle the response
|
||||||
|
return true;
|
||||||
|
}
|
||||||
20
STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h
Normal file
20
STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#ifndef __APP_MQTT_H__
|
||||||
|
#define __APP_MQTT_H__
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "ESP8266.h"
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MQTT_MODE_NORMAL = 0,
|
||||||
|
MQTT_MODE_PROPERTY,
|
||||||
|
}eMqttMode_t;
|
||||||
|
|
||||||
|
bool bMqttSubMsgFormat(eMqttMode_t ucMode, char *pcReceivedMsg, char *pcTopic, char *pcMessage);
|
||||||
|
bool bMqttNormalSubscribe(char *pcTopic, char *pcMessage);
|
||||||
|
bool bMqttNormalPublish(char *pcTopic, char *pcMessage);
|
||||||
|
|
||||||
|
#endif /* __APP_MQTT_H__ */
|
||||||
@@ -10,9 +10,9 @@ struct SerialFrame_t xSerialFrameRecord = { 0 };
|
|||||||
* @param <20><>
|
* @param <20><>
|
||||||
* @retval <20><>
|
* @retval <20><>
|
||||||
*/
|
*/
|
||||||
static void vEsp8266GpioConfig ( void )
|
void vEsp8266GpioConfig ( void )
|
||||||
{
|
{
|
||||||
/*<2A><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>GPIO_InitTypeDef<65><66><EFBFBD>͵Ľṹ<C4BD><E1B9B9>*/
|
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>GPIO_InitTypeDef<EFBFBD><EFBFBD><EFBFBD>͵Ľṹ<EFBFBD><EFBFBD> */
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
/* <20><><EFBFBD><EFBFBD> CH_PD <20><><EFBFBD><EFBFBD>*/
|
/* <20><><EFBFBD><EFBFBD> CH_PD <20><><EFBFBD><EFBFBD>*/
|
||||||
RCC_APB2PeriphClockCmd ( macESP8266_CH_PD_CLK, ENABLE );
|
RCC_APB2PeriphClockCmd ( macESP8266_CH_PD_CLK, ENABLE );
|
||||||
@@ -26,20 +26,6 @@ static void vEsp8266GpioConfig ( void )
|
|||||||
GPIO_Init ( macESP8266_RST_PORT, & GPIO_InitStructure );
|
GPIO_Init ( macESP8266_RST_PORT, & GPIO_InitStructure );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief vEsp8266Init
|
|
||||||
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
|
||||||
* @param <20><>
|
|
||||||
* @retval <20><>
|
|
||||||
*/
|
|
||||||
void vEsp8266Init ( void )
|
|
||||||
{
|
|
||||||
vEsp8266GpioConfig ();
|
|
||||||
macESP8266_RST_HIGH_LEVEL();
|
|
||||||
macESP8266_CH_DISABLE();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief vEsp8266Rst
|
* @brief vEsp8266Rst
|
||||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ESP8266ģ<36>飬<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>vEsp8266AtTest<73><74><EFBFBD>á<EFBFBD>
|
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ESP8266ģ<36>飬<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>vEsp8266AtTest<73><74><EFBFBD>á<EFBFBD>
|
||||||
@@ -157,26 +143,26 @@ bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcM
|
|||||||
{
|
{
|
||||||
char cCmd[512] = {0};
|
char cCmd[512] = {0};
|
||||||
|
|
||||||
// 1. <20><><EFBFBD><EFBFBD>MQTT<54>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
/* 1. <20><><EFBFBD><EFBFBD>MQTT<54>û<EFBFBD><C3BB><EFBFBD>Ϣ */
|
||||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"",
|
snprintf(cCmd, sizeof(cCmd), "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"",
|
||||||
pcMqttUserName, pcMqttPassword);
|
pcMqttUserName, pcMqttPassword);
|
||||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// 2. <20><><EFBFBD>ÿͻ<C3BF><CDBB><EFBFBD>ID
|
/* 2. <20><><EFBFBD>ÿͻ<C3BF><CDBB><EFBFBD>ID */
|
||||||
memset(cCmd, 0, sizeof(cCmd));
|
memset(cCmd, 0, sizeof(cCmd));
|
||||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCLIENTID=0,\"%s\"", pcMqttClientId);
|
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCLIENTID=0,\"%s\"", pcMqttClientId);
|
||||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// 3. <20><><EFBFBD>ӵ<EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
/* 3. <20><><EFBFBD>ӵ<EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
memset(cCmd, 0, sizeof(cCmd));
|
memset(cCmd, 0, sizeof(cCmd));
|
||||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCONN=0,\"%s\",%u,1",
|
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCONN=0,\"%s\",%u,1",
|
||||||
pcMqttServerIp, usMqttServerPort);
|
pcMqttServerIp, usMqttServerPort);
|
||||||
if (!bEsp8266Command(cCmd, "OK", NULL, 5000))
|
if (!bEsp8266Command(cCmd, "OK", NULL, 5000) && !bEsp8266Command(cCmd, "+MQTTCONN", NULL, 5000))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
/* 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
memset(cCmd, 0, sizeof(cCmd));
|
memset(cCmd, 0, sizeof(cCmd));
|
||||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTSUB=0,\"%s\",1", pcMqttSubscribeTopic);
|
snprintf(cCmd, sizeof(cCmd), "AT+MQTTSUB=0,\"%s\",1", pcMqttSubscribeTopic);
|
||||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||||
@@ -216,17 +202,17 @@ bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx )
|
|||||||
/**
|
/**
|
||||||
* @brief bEsp8266LinkServer
|
* @brief bEsp8266LinkServer
|
||||||
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
* @note ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
||||||
* @param enumE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* @param xNetProtocol<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* @param pcIp<49><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
* @param pcIp<49><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
* @param pcComNum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF><DABA>ַ<EFBFBD><D6B7><EFBFBD>
|
* @param pcComNum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF><DABA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
* @param xId<49><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>
|
* @param xId<49><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>
|
||||||
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3>
|
* @retval 1<><31><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3>
|
||||||
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
* @retval 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||||
*/
|
*/
|
||||||
bool bEsp8266LinkServer ( eNetPro_t enumE, char * pcIp, char * pcComNum, eIdNo_t xId)
|
bool bEsp8266LinkServer ( eNetPro_t xNetProtocol, char * pcIp, char * pcComNum, eIdNo_t xId)
|
||||||
{
|
{
|
||||||
char cStr [100] = { 0 }, cCmd [120];
|
char cStr [100] = { 0 }, cCmd [120];
|
||||||
switch ( enumE )
|
switch ( xNetProtocol )
|
||||||
{
|
{
|
||||||
case enumTCP:
|
case enumTCP:
|
||||||
sprintf ( cStr, "\"%s\",\"%s\",%s", "TCP", pcIp, pcComNum );
|
sprintf ( cStr, "\"%s\",\"%s\",%s", "TCP", pcIp, pcComNum );
|
||||||
@@ -241,7 +227,7 @@ bool bEsp8266LinkServer ( eNetPro_t enumE, char * pcIp, char * pcComNum, eIdNo_t
|
|||||||
sprintf ( cCmd, "AT+CIPSTART=%d,%s", xId, cStr);
|
sprintf ( cCmd, "AT+CIPSTART=%d,%s", xId, cStr);
|
||||||
else
|
else
|
||||||
sprintf ( cCmd, "AT+CIPSTART=%s", cStr );
|
sprintf ( cCmd, "AT+CIPSTART=%s", cStr );
|
||||||
return bEsp8266Command ( cCmd, "OK", "ALREAY CONNECT", 4000 );
|
return bEsp8266Command ( cCmd, "OK", "ALREADY CONNECT", 4000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -368,7 +354,7 @@ uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength )
|
|||||||
*/
|
*/
|
||||||
bool bEsp8266UnvarnishSend ( void )
|
bool bEsp8266UnvarnishSend ( void )
|
||||||
{
|
{
|
||||||
return ( bEsp8266Command ( "AT+CIPMODE=1", "OK", 0, 500 ) );
|
return bEsp8266Command ( "AT+CIPMODE=1", "OK", 0, 500 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -74,42 +74,53 @@ typedef enum{
|
|||||||
#define macESP8266_RST_LOW_LEVEL() GPIO_ResetBits ( macESP8266_RST_PORT, macESP8266_RST_PIN )
|
#define macESP8266_RST_LOW_LEVEL() GPIO_ResetBits ( macESP8266_RST_PORT, macESP8266_RST_PIN )
|
||||||
|
|
||||||
/* ESP8266 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* ESP8266 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
static void vEsp8266GpioConfig ( void );
|
void vEsp8266GpioConfig ( void );
|
||||||
void vEsp8266Init ( void );
|
|
||||||
void vEsp8266Rst ( void );
|
void vEsp8266Rst ( void );
|
||||||
bool bEsp8266Command ( char * pcCmd, char * pcAck1, char * pcAck2, uint32_t ulWaittime );
|
bool bEsp8266Command ( char * pcCmd, char * pcAck1,
|
||||||
|
char * pcAck2, uint32_t ulWaittime );
|
||||||
void vEsp8266AtTest ( void );
|
void vEsp8266AtTest ( void );
|
||||||
bool bEsp8266NetModeChoose ( eNetMode_t xMode );
|
bool bEsp8266NetModeChoose ( eNetMode_t xMode );
|
||||||
bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord );
|
bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord );
|
||||||
bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcMqttClientId, char * pcMqttServerIp, uint16_t usMqttServerPort, char * pcMqttSubscribeTopic );
|
bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcMqttClientId,
|
||||||
|
char * pcMqttServerIp, uint16_t usMqttServerPort, char * pcMqttSubscribeTopic );
|
||||||
bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode );
|
bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode );
|
||||||
bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx );
|
bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx );
|
||||||
bool bEsp8266LinkServer ( eNetPro_t enumE, char * pcIp, char * pcComNum, eIdNo_t xId);
|
bool bEsp8266LinkServer ( eNetPro_t xNetProtocol, char * pcIp,
|
||||||
|
char * pcComNum, eIdNo_t xId);
|
||||||
bool bEsp8266StartOrShutServer ( FunctionalState xMode, char * pcPortNum, char * pcTimeOver );
|
bool bEsp8266StartOrShutServer ( FunctionalState xMode, char * pcPortNum, char * pcTimeOver );
|
||||||
uint8_t ucEsp8266GetLinkStatus ( void );
|
uint8_t ucEsp8266GetLinkStatus ( void );
|
||||||
uint8_t ucEsp8266GetIdLinkStatus ( void );
|
uint8_t ucEsp8266GetIdLinkStatus ( void );
|
||||||
uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength );
|
uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength );
|
||||||
bool bEsp8266UnvarnishSend ( void );
|
bool bEsp8266UnvarnishSend ( void );
|
||||||
void vEsp8266ExitUnvarnishSend ( void );
|
void vEsp8266ExitUnvarnishSend ( void );
|
||||||
bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint32_t ulStrLength, eIdNo_t xId );
|
bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr,
|
||||||
|
uint32_t ulStrLength, eIdNo_t xId );
|
||||||
char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx );
|
char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx );
|
||||||
|
|
||||||
/* <20>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD> */
|
/* <20>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD> */
|
||||||
#define ESP8266_APSSID "TESTAP888" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// #define ESP8266_APSSID "CMCC-5bjx" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define ESP8266_APPWD "123345567" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>Կ
|
#define ESP8266_APSSID "TESTAP"
|
||||||
|
#define ESP8266_APPWD "jp7qpqn3" // Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD><D3B5>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>Կ
|
||||||
|
|
||||||
#define ESP8266_MQTT_SERVER_IP "121.36.104.9" // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
|
#define ALIYUN 0
|
||||||
#define ESP8266_MQTT_SERVER_PORT 1883 // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
#define EMQX 1
|
||||||
#define ESP8266_MQTT_CLIENT_ID "LoRaEnvAssistant&stm32" // MQTT<54>ͻ<EFBFBD><EFBFBD><EFBFBD>ID
|
#define ESP8266_MQTT_SERVER_MODE ALIYUN // ѡ<EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ALIYUN/EMQX
|
||||||
#define ESP8266_MQTT_USERNAME "stm32" // MQTT<54>û<EFBFBD><C3BB><EFBFBD>
|
|
||||||
#define ESP8266_MQTT_PASSWORD "123456789" // MQTT<54><54><EFBFBD><EFBFBD>
|
#define ESP8266_EMQX_MQTT_SERVER_IP "121.36.104.9" // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>ַ
|
||||||
|
#define ESP8266_EMQX_MQTT_SERVER_PORT 1883 // MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
||||||
|
#define ESP8266_EMQX_MQTT_CLIENTID "LoRaEnvAssistant&stm32" // MQTT<54>ͻ<EFBFBD><CDBB><EFBFBD>ID
|
||||||
|
#define ESP8266_EMQX_MQTT_USERNAME "stm32" // MQTT<54>û<EFBFBD><C3BB><EFBFBD>
|
||||||
|
#define ESP8266_EMQX_MQTT_PASSWORD "123456789" // MQTT<54><54><EFBFBD><EFBFBD>
|
||||||
|
#define ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC "/LoRaEnvAssistant/LoRaEnvAssistant&mqttfx/topics" // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
#define ESP8266_EMQX_MQTT_PUBLISH_TOPIC "/LoRaEnvAssistant/LoRaEnvAssistant&stm32/topics" // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define ESP8266_ALIYUN_MQTT_IP "iot-06z00by9al78fmz.mqtt.iothub.aliyuncs.com"
|
#define ESP8266_ALIYUN_MQTT_IP "iot-06z00by9al78fmz.mqtt.iothub.aliyuncs.com"
|
||||||
#define ESP8266_ALIYUN_MQTT_PORT 1883
|
#define ESP8266_ALIYUN_MQTT_PORT 1883
|
||||||
#define ESP8266_ALIYUN_MQTT_CLIENT_ID "k11ilqnf8mF.GATEWAY_STM32_ESP8266|securemode=2\\,signmethod=hmacsha256\\,timestamp=1768114890602|"
|
#define ESP8266_ALIYUN_MQTT_CLIENTID "k11ilqnf8mF.GATEWAY_STM32_ESP8266|securemode=2\\,signmethod=hmacsha256\\,timestamp=1768415322303|"
|
||||||
#define ESP8266_ALIYUN_MQTT_USERNAME "GATEWAY_STM32_ESP8266&k11ilqnf8mF"
|
#define ESP8266_ALIYUN_MQTT_USERNAME "GATEWAY_STM32_ESP8266&k11ilqnf8mF"
|
||||||
#define ESP8266_ALIYUN_MQTT_PASSWORD "8457286184495376a925f47ca284bb46a2fe8f6a6b76b0479ddb066038fe0d26"
|
#define ESP8266_ALIYUN_MQTT_PASSWORD "a74261b04d7dda672342776b88e956f26f74f4d9d104461f8b65cbf544ab9c03"
|
||||||
#define ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC "/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/get"
|
#define ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC "/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/get"
|
||||||
|
#define ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC "/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/update"
|
||||||
|
|
||||||
/* <20>ⲿȫ<E2B2BF>ֱ<EFBFBD><D6B1><EFBFBD> */
|
/* <20>ⲿȫ<E2B2BF>ֱ<EFBFBD><D6B1><EFBFBD> */
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
#define configUSE_TIME_SLICING 1
|
#define configUSE_TIME_SLICING 1
|
||||||
/* <20><><EFBFBD>С<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA>ر<EFBFBD> */
|
/* <20><><EFBFBD>С<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA>ر<EFBFBD> */
|
||||||
#define configUSE_QUEUE_SETS 0
|
#define configUSE_QUEUE_SETS 0
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>ܣ<EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD> */
|
||||||
#define configUSE_TASK_NOTIFICATIONS 1
|
#define configUSE_TASK_NOTIFICATIONS 1
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
#define configUSE_MUTEXES 0
|
#define configUSE_MUTEXES 0
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
3704
STM32/Gateway_Node/STM32Template.uvguix_Exploration.bak
Normal file
3704
STM32/Gateway_Node/STM32Template.uvguix_Exploration.bak
Normal file
File diff suppressed because one or more lines are too long
@@ -982,7 +982,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>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
|||||||
|
|
||||||
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_APB2PeriphClockCmd(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>λ
|
||||||
@@ -217,22 +217,32 @@ void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...)
|
|||||||
*/
|
*/
|
||||||
void USART1_IRQHandler(void)
|
void USART1_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
|
/* code */
|
||||||
{
|
#if (USE_RTOS == NONE)
|
||||||
/* code */
|
uint8_t ucRxData;
|
||||||
#if (USE_RTOS == NONE)
|
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
|
||||||
|
{
|
||||||
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
|
ucRxData = USART_ReceiveData(USART1);
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
USART_SendData(USART1, ucRxData);
|
||||||
|
}
|
||||||
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 1)
|
||||||
|
if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
|
||||||
|
{
|
||||||
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART1);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ucRxData, &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);
|
||||||
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||||
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 0)
|
}
|
||||||
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART1_IRQ == 0)
|
||||||
#endif
|
// uint8_t ucRxData;
|
||||||
}
|
// if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
|
||||||
|
// {
|
||||||
|
// ucRxData = USART_ReceiveData(USART1);
|
||||||
|
// USART_SendData(USART1, ucRxData);
|
||||||
|
// }
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -244,44 +254,45 @@ void USART1_IRQHandler(void)
|
|||||||
void USART2_IRQHandler(void)
|
void USART2_IRQHandler(void)
|
||||||
{
|
{
|
||||||
#if (USE_RTOS == NONE && defined __ESP8266_SAMPLE_H__)
|
#if (USE_RTOS == NONE && defined __ESP8266_SAMPLE_H__)
|
||||||
uint8_t ulRxData;
|
uint8_t ucRxData;
|
||||||
if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
|
if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
|
||||||
{
|
{
|
||||||
ulRxData = USART_ReceiveData( USART2 );
|
ucRxData = USART_ReceiveData( USART2 );
|
||||||
if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ulRxData;
|
xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ucRxData;
|
||||||
}
|
}
|
||||||
if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
|
xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
|
||||||
ulRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
|
ucRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
|
||||||
ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
|
ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
|
||||||
}
|
}
|
||||||
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1)
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1)
|
||||||
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
|
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART2);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ucRxData, &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);
|
||||||
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 0)
|
#elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 0)
|
||||||
uint8_t ulRxData;
|
uint8_t ucRxData;
|
||||||
if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
|
if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET )
|
||||||
{
|
{
|
||||||
ulRxData = USART_ReceiveData( USART2 );
|
ucRxData = USART_ReceiveData( USART2 );
|
||||||
if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //Ԥ<><D4A4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ulRxData;
|
xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ucRxData;
|
||||||
}
|
}
|
||||||
if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
|
xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1;
|
||||||
ulRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
|
ucRxData = USART_ReceiveData( USART2 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ(<28>ȶ<EFBFBD>USART_SR<53><52>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>USART_DR)
|
||||||
ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
|
ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
USART_SendData(USART1, ucRxData);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,9 +310,9 @@ void USART3_IRQHandler(void)
|
|||||||
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
|
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
uint8_t ucRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ucRxData, &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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,15 +49,17 @@
|
|||||||
|
|
||||||
extern volatile uint8_t ucTcpClosedFlag;
|
extern volatile uint8_t ucTcpClosedFlag;
|
||||||
|
|
||||||
#define BUFFER_MAX_LENGTH 1024 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
#define BUFFER_MAX_LENGTH 1024 // <20><><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
extern struct SerialFrame_t // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
extern struct SerialFrame_t // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||||
{
|
{
|
||||||
char cSerialReceivedBuffer [ BUFFER_MAX_LENGTH ];
|
char cSerialReceivedBuffer [ BUFFER_MAX_LENGTH ];
|
||||||
union {
|
union
|
||||||
__IO uint16_t usInfoAll;
|
{
|
||||||
struct {
|
__IO uint16_t usInfoAll;
|
||||||
__IO uint16_t usFrameLength :15; // 14:0
|
struct
|
||||||
__IO uint16_t usFrameFinishFlag :1; // 15
|
{
|
||||||
|
__IO uint16_t usFrameLength :15; // 14:0
|
||||||
|
__IO uint16_t usFrameFinishFlag :1; // 15
|
||||||
} Bits_t;
|
} Bits_t;
|
||||||
};
|
};
|
||||||
} xSerialFrameRecord;
|
} xSerialFrameRecord;
|
||||||
|
|||||||
@@ -1,28 +1,23 @@
|
|||||||
#include "stm32f10x.h" // Device header
|
#include "stm32f10x.h" // Device header
|
||||||
#include "FreeRTOS.h"
|
|
||||||
#include "task.h"
|
|
||||||
#include "queue.h"
|
|
||||||
#include "semphr.h"
|
|
||||||
#include "Delay.h"
|
#include "Delay.h"
|
||||||
#include "USART.h"
|
#include "USART.h"
|
||||||
#include "LED.h"
|
#include "LED.h"
|
||||||
#include "ESP8266.h"
|
#include "ESP8266.h"
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "queue.h"
|
||||||
|
|
||||||
/* <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> */
|
||||||
TaskHandle_t xTaskStateLedHdlr;
|
TaskHandle_t xTaskWorkStatusLedHdlr;
|
||||||
TaskHandle_t xTaskBufferRxHdlr;
|
|
||||||
TaskHandle_t xTaskWifiJoinApHdlr;
|
TaskHandle_t xTaskWifiJoinApHdlr;
|
||||||
TaskHandle_t xTaskWifiMqttInitHdlr;
|
TaskHandle_t xTaskWifiNwkInitHdlr;
|
||||||
|
TaskHandle_t xTaskMqttPublishTestHdlr;
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */
|
||||||
QueueHandle_t xQueueUsart1IrqHdlr;
|
QueueHandle_t xQueueUsart1IrqHdlr;
|
||||||
QueueHandle_t xQueueUsart2IrqHdlr;
|
QueueHandle_t xQueueUsart2IrqHdlr;
|
||||||
QueueHandle_t xQueueUsart3IrqHdlr;
|
QueueHandle_t xQueueUsart3IrqHdlr;
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
||||||
SemaphoreHandle_t xSemWifiRetOkHdlr;
|
|
||||||
SemaphoreHandle_t xSemWifiRetErrHdlr;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ״ָ̬ʾLED<45><44><EFBFBD><EFBFBD>
|
* @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>
|
* @note ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC13<31><33><EFBFBD>ŵ<EFBFBD>LED<45>ƣ<EFBFBD>ʵ<EFBFBD><CAB5>ϵͳ״̬<D7B4><CCAC>ָʾ<D6B8><CABE><EFBFBD>ܡ<EFBFBD>
|
||||||
@@ -30,7 +25,7 @@ SemaphoreHandle_t xSemWifiRetErrHdlr;
|
|||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
void vTaskStateLed(void *pvParameters)
|
void vTaskWorkStatusLed(void *pvParameters)
|
||||||
{
|
{
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
@@ -42,70 +37,108 @@ void vTaskStateLed(void *pvParameters)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD><EFBFBD>
|
* @brief <20><>ʼ<EFBFBD><EFBFBD>Wi-Fiģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>WiFi<46>ȵ㡣
|
|
||||||
* @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 vTaskWifiJoinAp(void *pvParameters)
|
|
||||||
{
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
macESP8266_CH_ENABLE();
|
|
||||||
vEsp8266AtTest();
|
|
||||||
bEsp8266NetModeChoose(STA);
|
|
||||||
while(!bEsp8266JoinAp(ESP8266_APSSID, ESP8266_APPWD));
|
|
||||||
vUsartPrintf(USART1, "Wifi Join To AP Success\r\n");
|
|
||||||
vTaskDelete(NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief <20><>ʼ<EFBFBD><CABC>MQTTЭ<54><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>MQTTЭ<54><D0AD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>MQTTЭ<54><D0AD><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>
|
* @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
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void vTaskWifiMqttInit(void *pvParameters)
|
void vTaskWifiNetWorkInit(void *pvParameters)
|
||||||
{
|
{
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
// if (*ucMqttMode == ALIYUN)
|
vEsp8266GpioConfig();
|
||||||
// {
|
vEsp8266AtTest();
|
||||||
// /* code */
|
if (bEsp8266NetModeChoose(STA) == pdTRUE)
|
||||||
// if (bEsp8266MqttInit(ESP8266_ALIYUN_MQTT_USERNAME, ESP8266_ALIYUN_MQTT_PASSWORD, ESP8266_ALIYUN_MQTT_CLIENT_ID,
|
{
|
||||||
// ESP8266_ALIYUN_MQTT_IP, ESP8266_ALIYUN_MQTT_PORT, ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC) == true)
|
vUsartSendString(USART1, "Set ESP8266 Net Mode Successfully.\r\n");
|
||||||
// {
|
} else
|
||||||
// /* code */
|
|
||||||
// vUsartPrintf(USART1, "MQTT Init Success\r\n");
|
|
||||||
// vTaskDelete(NULL);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (*ucMqttMode == EMQX)
|
|
||||||
// {
|
|
||||||
// /* code */
|
|
||||||
// if (bEsp8266MqttInit(ESP8266_MQTT_USERNAME, ESP8266_MQTT_PASSWORD, ESP8266_MQTT_CLIENT_ID,
|
|
||||||
// ESP8266_MQTT_SERVER_IP, ESP8266_MQTT_SERVER_PORT, NULL) == true)
|
|
||||||
// {
|
|
||||||
// /* code */
|
|
||||||
// vUsartPrintf(USART1, "MQTT Init Success\r\n");
|
|
||||||
// vTaskDelete(NULL);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if (bEsp8266MqttInit(ESP8266_ALIYUN_MQTT_USERNAME, ESP8266_ALIYUN_MQTT_PASSWORD, ESP8266_ALIYUN_MQTT_CLIENT_ID,
|
|
||||||
ESP8266_ALIYUN_MQTT_IP, ESP8266_ALIYUN_MQTT_PORT, ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC) == true)
|
|
||||||
{
|
{
|
||||||
/* code */
|
/* code */
|
||||||
vUsartPrintf(USART1, "MQTT Init Success\r\n");
|
vUsartSendString(USART1, "Set ESP8266 Net Mode Failed.\r\n");
|
||||||
vTaskDelete(NULL);
|
continue;
|
||||||
|
}
|
||||||
|
if (bEsp8266JoinAp(ESP8266_APSSID, ESP8266_APPWD) == pdTRUE)
|
||||||
|
{
|
||||||
|
vUsartSendString(USART1, "Wifi Join To AP Successfully.\r\n");
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "Wifi Join To AP Failed.\r\n");
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
// if (bEsp8266MqttInit(ESP8266_MQTT_USERNAME, ESP8266_MQTT_PASSWORD, ESP8266_MQTT_CLIENT_ID,
|
#if (ESP8266_MQTT_SERVER_MODE == ALIYUN)
|
||||||
// ESP8266_MQTT_SERVER_IP, ESP8266_MQTT_SERVER_PORT, NULL) == true)
|
if (bEsp8266MqttInit(ESP8266_ALIYUN_MQTT_USERNAME, ESP8266_ALIYUN_MQTT_PASSWORD, ESP8266_ALIYUN_MQTT_CLIENTID,
|
||||||
// {
|
ESP8266_ALIYUN_MQTT_IP, ESP8266_ALIYUN_MQTT_PORT, ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC) == pdTRUE)
|
||||||
// /* code */
|
{
|
||||||
// vUsartPrintf(USART1, "MQTT Init Success\r\n");
|
/* code */
|
||||||
// vTaskDelete(NULL);
|
vUsartSendString(USART1, "Aliyun MQTT Init Successfully.\r\n");
|
||||||
// }
|
/* ֪ͨMQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
|
xTaskNotifyGive(xTaskMqttPublishTestHdlr);
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "Aliyun MQTT Init Failed.\r\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#elif (ESP8266_MQTT_SERVER_MODE == EMQX)
|
||||||
|
if (bEsp8266MqttInit(ESP8266_EMQX_MQTT_USERNAME, ESP8266_EMQX_MQTT_PASSWORD, ESP8266_EMQX_MQTT_CLIENTID,
|
||||||
|
ESP8266_EMQX_MQTT_SERVER_IP, ESP8266_EMQX_MQTT_SERVER_PORT, ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == pdTRUE)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartPrintf(USART1, "EMQX MQTT Init Successfully.\r\n");
|
||||||
|
xTaskNotifyGive(xTaskMqttPublishTestHdlr);
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "EMQX MQTT Init Failed.\r\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
||||||
|
* @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 vTaskMqttPublishTest(void *pvParameters)
|
||||||
|
{
|
||||||
|
/* <20><><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> */
|
||||||
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||||
|
char cCmd[256] = {0};
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
#if (ESP8266_MQTT_SERVER_MODE == ALIYUN)
|
||||||
|
const char* pcMsg = "test";
|
||||||
|
sprintf(cCmd, "AT+MQTTPUB=0,\"%s\",\"%s\",1,0",
|
||||||
|
ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC, pcMsg);
|
||||||
|
if (bEsp8266Command(cCmd, "OK", NULL, 3000) == pdTRUE)
|
||||||
|
{
|
||||||
|
vUsartSendString(USART1, "Aliyun MQTT Publish Successfully.\r\n");
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "Aliyun MQTT Publish Failed.\r\n");
|
||||||
|
}
|
||||||
|
vTaskDelay(500);
|
||||||
|
#elif (ESP8266_MQTT_SERVER_MODE == EMQX)
|
||||||
|
const char* pcMsg = "test";
|
||||||
|
sprintf(cCmd, "AT+MQTTPUB=0,\"%s\",\"%s\",0,0", ESP8266_EMQX_MQTT_PUBLISH_TOPIC, pcMsg);
|
||||||
|
if (bEsp8266Command(cCmd, "OK", NULL, 3000) == pdTRUE)
|
||||||
|
{
|
||||||
|
vUsartSendString(USART1, "EMQX MQTT Publish Successfully.\r\n");
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
vUsartSendString(USART1, "EMQX MQTT Publish Failed.\r\n");
|
||||||
|
}
|
||||||
|
vTaskDelay(500);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,26 +151,26 @@ void vTaskWifiMqttInit(void *pvParameters)
|
|||||||
void vCreateTasksList(void)
|
void vCreateTasksList(void)
|
||||||
{
|
{
|
||||||
xTaskCreate(
|
xTaskCreate(
|
||||||
(TaskFunction_t ) vTaskStateLed,
|
(TaskFunction_t ) vTaskWorkStatusLed,
|
||||||
(char * ) "TaskName_StateLed",
|
(char * ) "TaskName_StateLed",
|
||||||
(configSTACK_DEPTH_TYPE) 256,
|
(configSTACK_DEPTH_TYPE) 256,
|
||||||
(void * ) NULL,
|
(void * ) NULL,
|
||||||
(UBaseType_t ) 2,
|
(UBaseType_t ) 2,
|
||||||
(TaskHandle_t * ) &xTaskStateLedHdlr);
|
(TaskHandle_t * ) &xTaskWorkStatusLedHdlr);
|
||||||
xTaskCreate(
|
xTaskCreate(
|
||||||
(TaskFunction_t ) vTaskWifiJoinAp,
|
(TaskFunction_t ) vTaskWifiNetWorkInit,
|
||||||
(char * ) "TaskName_WifiConnectToAP",
|
|
||||||
(configSTACK_DEPTH_TYPE) 512,
|
|
||||||
(void * ) NULL,
|
|
||||||
(UBaseType_t ) 2,
|
|
||||||
(TaskHandle_t * ) &xTaskWifiJoinApHdlr);
|
|
||||||
xTaskCreate(
|
|
||||||
(TaskFunction_t ) vTaskWifiMqttInit,
|
|
||||||
(char * ) "TaskName_WifiInitMQTTProtocol",
|
(char * ) "TaskName_WifiInitMQTTProtocol",
|
||||||
(configSTACK_DEPTH_TYPE) 512,
|
(configSTACK_DEPTH_TYPE) 512,
|
||||||
(void * ) NULL,
|
(void * ) NULL,
|
||||||
(UBaseType_t ) 2,
|
(UBaseType_t ) 2,
|
||||||
(TaskHandle_t * ) &xTaskWifiMqttInitHdlr);
|
(TaskHandle_t * ) &xTaskWifiNwkInitHdlr);
|
||||||
|
xTaskCreate(
|
||||||
|
(TaskFunction_t ) vTaskMqttPublishTest,
|
||||||
|
(char * ) "TaskName_MqttPublishTest",
|
||||||
|
(configSTACK_DEPTH_TYPE) 512,
|
||||||
|
(void * ) NULL,
|
||||||
|
(UBaseType_t ) 2,
|
||||||
|
(TaskHandle_t * ) &xTaskMqttPublishTestHdlr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -174,8 +207,6 @@ void vCreateQueuesList(void)
|
|||||||
*/
|
*/
|
||||||
void vCreateSemaphoresList(void)
|
void vCreateSemaphoresList(void)
|
||||||
{
|
{
|
||||||
xSemWifiRetOkHdlr = xSemaphoreCreateBinary();
|
|
||||||
xSemWifiRetErrHdlr = xSemaphoreCreateBinary();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
21
update.md
Normal file
21
update.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
## <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||||
|
|
||||||
|
### 2026.1.15<EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
**1<><31>**
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTTЭ<EFBFBD>鷢<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܡ<EFBFBD>
|
||||||
|
|
||||||
|
**2<><32>**
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ʼ<EFBFBD><EFBFBD>Wi-Fi<46><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
|
```c
|
||||||
|
xTaskNotifyGive(xXxTaskHandle);
|
||||||
|
```
|
||||||
|
<EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
```c
|
||||||
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||||
|
```
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
**3<><33>**
|
||||||
|
<EFBFBD>IJ<EFBFBD><EFBFBD>ֺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ⡣
|
||||||
Reference in New Issue
Block a user