Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不穿格子衫的农民
TencentOS Tiny
提交
51b27e33
T
TencentOS Tiny
项目概览
不穿格子衫的农民
/
TencentOS Tiny
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TencentOS Tiny
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
51b27e33
编写于
7月 06, 2021
作者:
S
Supowang
提交者:
GitHub
7月 06, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #306 from DavidLin1577/master
Updated sensor_parser.h
上级
3aaafde7
ec7428ac
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
6 addition
and
383 deletion
+6
-383
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.bin
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.bin
+0
-0
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.elf
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.elf
+0
-0
board/BearPi_STM32L431RC/BSP/Hardware/E53_ST1/E53_ST1.c
board/BearPi_STM32L431RC/BSP/Hardware/E53_ST1/E53_ST1.c
+0
-377
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_ST1/E53_ST1.c
...TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_ST1/E53_ST1.c
+3
-3
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/PM25/sensor_parser.h
...centOS_tiny_EVB_MX_Plus/BSP/Hardware/PM25/sensor_parser.h
+3
-3
未找到文件。
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.bin
100755 → 100644
浏览文件 @
51b27e33
文件模式从 100755 更改为 100644
board/ALPHA_I.MX_emmc_256ddr/out/target/TencentOS_tiny.elf
100755 → 100644
浏览文件 @
51b27e33
文件模式从 100755 更改为 100644
board/BearPi_STM32L431RC/BSP/Hardware/E53_ST1/E53_ST1.c
已删除
100644 → 0
浏览文件 @
3aaafde7
#include "E53_ST1.h"
#include "stm32l4xx.h"
#include "stm32l4xx_it.h"
#include "usart.h"
#include "main.h"
gps_msg
gpsmsg
;
static
unsigned
char
gps_uart
[
1000
];
TIM_HandleTypeDef
htim16
;
/***************************************************************
* 函数名称: MX_TIM16_Init
* 说 明: 初始化定时器16
* 参 数: 无
* 返 回 值: 无
***************************************************************/
/* TIM16 init function */
void
MX_TIM16_Init
(
void
)
{
TIM_OC_InitTypeDef
sConfigOC
;
TIM_BreakDeadTimeConfigTypeDef
sBreakDeadTimeConfig
;
htim16
.
Instance
=
TIM16
;
htim16
.
Init
.
Prescaler
=
79
;
htim16
.
Init
.
CounterMode
=
TIM_COUNTERMODE_UP
;
htim16
.
Init
.
Period
=
999
;
htim16
.
Init
.
ClockDivision
=
TIM_CLOCKDIVISION_DIV1
;
htim16
.
Init
.
RepetitionCounter
=
0
;
htim16
.
Init
.
AutoReloadPreload
=
TIM_AUTORELOAD_PRELOAD_DISABLE
;
if
(
HAL_TIM_Base_Init
(
&
htim16
)
!=
HAL_OK
)
{
Error_Handler
();
}
if
(
HAL_TIM_PWM_Init
(
&
htim16
)
!=
HAL_OK
)
{
Error_Handler
();
}
sConfigOC
.
OCMode
=
TIM_OCMODE_PWM1
;
sConfigOC
.
Pulse
=
499
;
sConfigOC
.
OCPolarity
=
TIM_OCPOLARITY_HIGH
;
sConfigOC
.
OCNPolarity
=
TIM_OCNPOLARITY_HIGH
;
sConfigOC
.
OCFastMode
=
TIM_OCFAST_DISABLE
;
sConfigOC
.
OCIdleState
=
TIM_OCIDLESTATE_RESET
;
sConfigOC
.
OCNIdleState
=
TIM_OCNIDLESTATE_RESET
;
if
(
HAL_TIM_PWM_ConfigChannel
(
&
htim16
,
&
sConfigOC
,
TIM_CHANNEL_1
)
!=
HAL_OK
)
{
Error_Handler
();
}
sBreakDeadTimeConfig
.
OffStateRunMode
=
TIM_OSSR_DISABLE
;
sBreakDeadTimeConfig
.
OffStateIDLEMode
=
TIM_OSSI_DISABLE
;
sBreakDeadTimeConfig
.
LockLevel
=
TIM_LOCKLEVEL_OFF
;
sBreakDeadTimeConfig
.
DeadTime
=
0
;
sBreakDeadTimeConfig
.
BreakState
=
TIM_BREAK_DISABLE
;
sBreakDeadTimeConfig
.
BreakPolarity
=
TIM_BREAKPOLARITY_HIGH
;
sBreakDeadTimeConfig
.
BreakFilter
=
0
;
sBreakDeadTimeConfig
.
AutomaticOutput
=
TIM_AUTOMATICOUTPUT_DISABLE
;
if
(
HAL_TIMEx_ConfigBreakDeadTime
(
&
htim16
,
&
sBreakDeadTimeConfig
)
!=
HAL_OK
)
{
Error_Handler
();
}
HAL_TIM_MspPostInit
(
&
htim16
);
}
/***************************************************************
* 函数名称: HAL_TIM_Base_MspInit
* 说 明: 使能定时器16时钟,设置时钟源
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
HAL_TIM_Base_MspInit
(
TIM_HandleTypeDef
*
tim_baseHandle
)
{
if
(
tim_baseHandle
->
Instance
==
TIM16
)
{
/* USER CODE BEGIN TIM16_MspInit 0 */
/* USER CODE END TIM16_MspInit 0 */
/* TIM16 clock enable */
__HAL_RCC_TIM16_CLK_ENABLE
();
/* USER CODE BEGIN TIM16_MspInit 1 */
/* USER CODE END TIM16_MspInit 1 */
}
}
/***************************************************************
* 函数名称: HAL_TIM_MspPostInit
* 说 明: 使能定时器16硬件初始化
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
HAL_TIM_MspPostInit
(
TIM_HandleTypeDef
*
timHandle
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
if
(
timHandle
->
Instance
==
TIM16
)
{
/* USER CODE BEGIN TIM16_MspPostInit 0 */
/* USER CODE END TIM16_MspPostInit 0 */
/**TIM16 GPIO Configuration
PB8 ------> TIM16_CH1
*/
GPIO_InitStruct
.
Pin
=
ST1_Beep_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_AF_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_HIGH
;
GPIO_InitStruct
.
Alternate
=
GPIO_AF14_TIM16
;
HAL_GPIO_Init
(
ST1_Beep_GPIO_Port
,
&
GPIO_InitStruct
);
/* USER CODE BEGIN TIM16_MspPostInit 1 */
/* USER CODE END TIM16_MspPostInit 1 */
}
}
/***************************************************************
* 函数名称: Init_Beep
* 说 明: 初始化E53_ST1的蜂鸣器
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
Init_Beep
(
void
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
/* GPIO Ports Clock Enable */
ST1_Beep_GPIO_CLK_ENABLE
();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
ST1_Beep_GPIO_Port
,
ST1_Beep_Pin
,
GPIO_PIN_RESET
);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
ST1_Beep_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
ST1_Beep_GPIO_Port
,
&
GPIO_InitStruct
);
}
/***************************************************************
* 函数名称: Init_LED
* 说 明: 初始化E53_ST1的LED灯
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
Init_LED
(
void
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
/* GPIO Ports Clock Enable */
ST1_LED_GPIO_CLK_ENABLE
();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
ST1_LED_GPIO_Port
,
ST1_LED_Pin
,
GPIO_PIN_SET
);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
ST1_LED_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
ST1_LED_GPIO_Port
,
&
GPIO_InitStruct
);
}
/***************************************************************
* 函数名称: Init_GPS_POW
* 说 明: 初始化E53_ST1的GPS使能引脚
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
Init_GPS_POW
(
void
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
/* GPIO Ports Clock Enable */
ST1_GPS_POW_GPIO_CLK_ENABLE
();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
ST1_GPS_POW_GPIO_Port
,
ST1_GPS_POW_Pin
,
GPIO_PIN_RESET
);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
ST1_GPS_POW_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
ST1_GPS_POW_GPIO_Port
,
&
GPIO_InitStruct
);
}
/***************************************************************
* 函数名称: GPS_Init
* 说 明: 初始化GPS模块
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
GPS_Init
(
void
)
{
MX_USART3_UART_Init
();
//初始化串口
HAL_UART_Transmit
(
&
huart3
,
"$CCMSG,GGA,1,0,*19
\r\n
"
,
20
,
200
);
HAL_UART_Transmit
(
&
huart3
,
"$CCMSG,GSA,1,0,*0D
\r\n
"
,
20
,
200
);
HAL_UART_Transmit
(
&
huart3
,
"$CCMSG,GSV,1,0,*1A
\r\n
"
,
20
,
200
);
}
/***************************************************************
* 函数名称: Init_E53_ST1
* 说 明: 初始化E53_ST1扩展板
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
Init_E53_ST1
(
void
)
{
GPS_Init
();
Init_Beep
();
Init_LED
();
Init_GPS_POW
();
MX_TIM16_Init
();
}
/***************************************************\
* 函数名称: NMEA_Comma_Pos
* 函数功能:从buf里面得到第cx个逗号所在的位置
* 输入值:
* 返回值:0~0xFE,代表逗号所在位置的偏移
* 0xFF,代表不存在第cx个逗号
\***************************************************/
uint8_t
NMEA_Comma_Pos
(
uint8_t
*
buf
,
uint8_t
cx
)
{
uint8_t
*
p
=
buf
;
while
(
cx
)
{
if
(
*
buf
==
'*'
||*
buf
<
' '
||*
buf
>
'z'
)
return
0xFF
;
if
(
*
buf
==
','
)
cx
--
;
buf
++
;
}
return
buf
-
p
;
}
/***************************************************\
* 函数名称: NMEA_Pow
* 函数功能:返回m的n次方值
* 输入值:底数m和指数n
* 返回值:m^n
\***************************************************/
uint32_t
NMEA_Pow
(
uint8_t
m
,
uint8_t
n
)
{
uint32_t
result
=
1
;
while
(
n
--
)
result
*=
m
;
return
result
;
}
/***************************************************\
* 函数名称: NMEA_Str2num
* 函数功能:str数字转换为(int)数字,以','或者'*'结束
* 输入值:buf,数字存储区
* dx,小数点位数,返回给调用函数
* 返回值:转换后的数值
\***************************************************/
int
NMEA_Str2num
(
uint8_t
*
buf
,
uint8_t
*
dx
)
{
uint8_t
*
p
=
buf
;
uint32_t
ires
=
0
,
fres
=
0
;
uint8_t
ilen
=
0
,
flen
=
0
,
i
;
uint8_t
mask
=
0
;
int
res
;
while
(
1
)
{
if
(
*
p
==
'-'
){
mask
|=
0x02
;
p
++
;}
//说明有负数
if
(
*
p
==
','
||*
p
==
'*'
)
break
;
//遇到结束符
if
(
*
p
==
'.'
){
mask
|=
0x01
;
p
++
;}
//遇到小数点
else
if
(
*
p
>
'9'
||
(
*
p
<
'0'
))
//数字不在0和9之内,说明有非法字符
{
ilen
=
0
;
flen
=
0
;
break
;
}
if
(
mask
&
0x01
)
flen
++
;
//小数点的位数
else
ilen
++
;
//str长度加一
p
++
;
//下一个字符
}
if
(
mask
&
0x02
)
buf
++
;
//移到下一位,除去负号
for
(
i
=
0
;
i
<
ilen
;
i
++
)
//得到整数部分数据
{
ires
+=
NMEA_Pow
(
10
,
ilen
-
1
-
i
)
*
(
buf
[
i
]
-
'0'
);
}
if
(
flen
>
5
)
flen
=
5
;
//最多取五位小数
*
dx
=
flen
;
for
(
i
=
0
;
i
<
flen
;
i
++
)
//得到小数部分数据
{
fres
+=
NMEA_Pow
(
10
,
flen
-
1
-
i
)
*
(
buf
[
ilen
+
1
+
i
]
-
'0'
);
}
res
=
ires
*
NMEA_Pow
(
10
,
flen
)
+
fres
;
if
(
mask
&
0x02
)
res
=
-
res
;
return
res
;
}
/***************************************************\
* 函数名称: NMEA_BDS_GPRMC_Analysis
* 函数功能:解析GPRMC信息
* 输入值:gpsx,NMEA信息结构体
* buf:接收到的GPS数据缓冲区首地址
\***************************************************/
void
NMEA_BDS_GPRMC_Analysis
(
gps_msg
*
gpsmsg
,
uint8_t
*
buf
)
{
uint8_t
*
p4
,
dx
;
uint8_t
posx
;
uint32_t
temp
;
float
rs
;
p4
=
(
uint8_t
*
)
strstr
((
const
char
*
)
buf
,
"$GPRMC"
);
//"$GPRMC",经常有&和GPRMC分开的情况,故只判断GPRMC.
posx
=
NMEA_Comma_Pos
(
p4
,
3
);
//得到纬度
if
(
posx
!=
0XFF
)
{
temp
=
NMEA_Str2num
(
p4
+
posx
,
&
dx
);
gpsmsg
->
latitude_bd
=
temp
/
NMEA_Pow
(
10
,
dx
+
2
);
//得到°
rs
=
temp
%
NMEA_Pow
(
10
,
dx
+
2
);
//得到'
gpsmsg
->
latitude_bd
=
gpsmsg
->
latitude_bd
*
NMEA_Pow
(
10
,
5
)
+
(
rs
*
NMEA_Pow
(
10
,
5
-
dx
))
/
60
;
//转换为°
}
posx
=
NMEA_Comma_Pos
(
p4
,
4
);
//南纬还是北纬
if
(
posx
!=
0XFF
)
gpsmsg
->
nshemi_bd
=*
(
p4
+
posx
);
posx
=
NMEA_Comma_Pos
(
p4
,
5
);
//得到经度
if
(
posx
!=
0XFF
)
{
temp
=
NMEA_Str2num
(
p4
+
posx
,
&
dx
);
gpsmsg
->
longitude_bd
=
temp
/
NMEA_Pow
(
10
,
dx
+
2
);
//得到°
rs
=
temp
%
NMEA_Pow
(
10
,
dx
+
2
);
//得到'
gpsmsg
->
longitude_bd
=
gpsmsg
->
longitude_bd
*
NMEA_Pow
(
10
,
5
)
+
(
rs
*
NMEA_Pow
(
10
,
5
-
dx
))
/
60
;
//转换为°
}
posx
=
NMEA_Comma_Pos
(
p4
,
6
);
//东经还是西经
if
(
posx
!=
0XFF
)
gpsmsg
->
ewhemi_bd
=*
(
p4
+
posx
);
}
/***************************************************************
* 函数名称: E53_ST1_Read_Data
* 说 明: 获取GPS经纬度信息
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void
E53_ST1_Read_Data
(
void
)
{
HAL_UART_Receive_IT
(
&
huart3
,
gps_uart
,
1000
);
NMEA_BDS_GPRMC_Analysis
(
&
gpsmsg
,(
uint8_t
*
)
gps_uart
);
//分析字符串
E53_ST1_Data
.
Longitude
=
(
float
)((
float
)
gpsmsg
.
longitude_bd
/
100000
);
E53_ST1_Data
.
Latitude
=
(
float
)((
float
)
gpsmsg
.
latitude_bd
/
100000
);
}
/***************************************************************
* 函数名称: E53_ST1_LED_StatusSet
* 说 明: E53 ST1开发板上的LED灯的亮灭控制
* 参 数: status,LED灯的状态
* 非1,关灯
* 1,开灯
* 返 回 值: 无
***************************************************************/
void
E53_ST1_LED_StatusSet
(
E53ST1_Status_ENUM
status
)
{
HAL_GPIO_WritePin
(
ST1_LED_GPIO_Port
,
ST1_LED_Pin
,
status
!=
ST1_ON
?
GPIO_PIN_RESET
:
GPIO_PIN_SET
);
}
/***************************************************************
* 函数名称: E53_ST1_Beep
* 说 明: E53 ST1蜂鸣器报警与否
* 参 数: status,LED_ENUM枚举的数据
* ST1_OFF,关蜂鸣器
* ST1_ON,开蜂鸣器
* 返 回 值: 无
***************************************************************/
void
E53_ST1_Beep
(
E53ST1_Status_ENUM
status
)
{
if
(
status
==
ST1_ON
)
HAL_TIM_PWM_Start
(
&
htim16
,
TIM_CHANNEL_1
);
if
(
status
==
ST1_OFF
)
HAL_TIM_PWM_Stop
(
&
htim16
,
TIM_CHANNEL_1
);
}
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_ST1/E53_ST1.c
浏览文件 @
51b27e33
...
@@ -360,9 +360,9 @@ void E53_ST1_LED_StatusSet(E53ST1_Status_ENUM status)
...
@@ -360,9 +360,9 @@ void E53_ST1_LED_StatusSet(E53ST1_Status_ENUM status)
/***************************************************************
/***************************************************************
* 函数名称: E53_ST1_Beep
* 函数名称: E53_ST1_Beep
* 说 明: E53 ST1蜂鸣器报警与否
* 说 明: E53 ST1蜂鸣器报警与否
* 参 数: status,
LED_ENUM
枚举的数据
* 参 数: status,
E53_ST1
枚举的数据
*
LED_OFF,关灯
*
ST1_OFF,关蜂鸣器
*
LED_ON,开灯
*
ST1_ON,开蜂鸣器
* 返 回 值: 无
* 返 回 值: 无
***************************************************************/
***************************************************************/
void
E53_ST1_Beep
(
E53ST1_Status_ENUM
status
)
void
E53_ST1_Beep
(
E53ST1_Status_ENUM
status
)
...
...
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/PM25/sensor_parser.h
浏览文件 @
51b27e33
...
@@ -15,8 +15,8 @@
...
@@ -15,8 +15,8 @@
* within TencentOS.
* within TencentOS.
*---------------------------------------------------------------------------*/
*---------------------------------------------------------------------------*/
#ifndef _
TOS_SHELL
_H_
#ifndef _
SENSOR_PARSER
_H_
#define _
TOS_SHELL
_H_
#define _
SENSOR_PARSER
_H_
#include "tos_k.h"
#include "tos_k.h"
...
@@ -50,5 +50,5 @@ __API__ void tos_shell_printf(const char *format, ...);
...
@@ -50,5 +50,5 @@ __API__ void tos_shell_printf(const char *format, ...);
__API__
void
tos_shell_input_byte
(
uint8_t
data
);
__API__
void
tos_shell_input_byte
(
uint8_t
data
);
#endif
/* _
TOS_SHELL
_H_ */
#endif
/* _
SENSOR_PARSER
_H_ */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录