小编Ish*_*eet的帖子

纬度经度格式错误DDDMM.MMMM 2832.3396N

我有一个gps模块,以奇怪的格式给我经度纬度.

DDDMM.MMMM
Run Code Online (Sandbox Code Playgroud)

如用户手册中所述,度数*100 +分钟.

据我所知,它是度数分钟秒,秒数在0-59之间,高于此值将增加分钟.但是这会给出小数点的分钟数.这是否意味着1/1000分钟?

eg. 07717.3644 E
077 --> degrees
17 --> minutes
3644 --> ?
E --> Direction
Run Code Online (Sandbox Code Playgroud)

我将如何将其转换为十进制,我正在使用公式

decimal = degrees + minutes/60 + seconds/3600.
Run Code Online (Sandbox Code Playgroud)

javascript c embedded gps latitude-longitude

9
推荐指数
2
解决办法
2万
查看次数

仅在LSI/LSE/HSE中Stm32L中的RTC时钟配置?

我正在使用IAR编译器在STM32L152RB Discovery板上实现实时时钟.我在HSI上实现了时钟配置,并使用PLL将其乘以4. Code - >

/* Enable HSI Clock */
RCC_HSICmd(ENABLE);

/*!< Wait till HSI is ready */
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);

RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4,RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE); 
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

/* Set HSI as sys clock*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
Run Code Online (Sandbox Code Playgroud)

问题是在配置实时时钟时我必须将辅助时钟LSE设置为RTC时钟源,在我的情况下,我的源时钟是HSI.根据我所知,其余的步骤包括启用PWR控制器,启用rtc域访问,rtc时钟源,rtc_init(),然后设置时间和gettime.这是我试过的代码 - >

/* Enable RTC clocks and rtc related functions */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_RTCAccessCmd(ENABLE);

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  //This part I think is wrong
RCC_RTCCLKCmd(ENABLE);
RTC_InitTypeStructure.RTC_HourFormat=RTC_HourFormat_12;
RTC_InitTypeStructure.RTC_AsynchPrediv=0x7F;
RTC_InitTypeStructure.RTC_SynchPrediv=0xFF;
RTC_Init(&RTC_InitTypeStructure);
/* End RTC Clock */
RTC_TimeTypeTime.RTC_Hours=18;
RTC_TimeTypeTime.RTC_Minutes=11;
RTC_TimeTypeTime.RTC_Seconds=4;
RTC_TimeTypeTime.RTC_H12=RTC_H12_PM;
RTC_SetTime(RTC_Format_BIN, &RTC_TimeTypeTime);
while(1){
    f_SleepMs(10);
    RTC_GetTime(RTC_Format_BIN, &RTC_TimeTypeTime);
    RELEASE_MSG("\r%d:%d:%d",RTC_TimeTypeTime.RTC_Hours,RTC_TimeTypeTime.RTC_Minutes,RTC_TimeTypeTime.RTC_Seconds);
}   
Run Code Online (Sandbox Code Playgroud)

我得到的输出是 …

c embedded real-time stm32

8
推荐指数
1
解决办法
2万
查看次数

__CC_ARM,__ ICCARM __,__ GNNUC__和__TASKING__宏是什么意思?

我正在通过stm研究STM32l151rct6a,我偶然发现了这些MACRO定义

__CC_ARM, __ICCARM__, __GNUC__, __TASKING__
Run Code Online (Sandbox Code Playgroud)

有谁知道他们的意思?

c embedded microcontroller data-structures

7
推荐指数
1
解决办法
1万
查看次数

Stm32L151RCxxx USART挂起问题,同时基于中断TX/RX

我在921600 BaudRate上运行USART3,使用RTS CTS,当我尝试同时执行RX和TX时,我总是面临系统挂起.我已粘贴主要和IRQ代码.IRQ旨在传输char'A',同时丢弃所有接收的数据.我们禁用时会挂起USART_ITConfig(USART3, USART_IT_TXE, DISABLE);

Uart_Configuration()...

USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
USART_ClockInit(USART3, &USART_ClockInitStructure);

USART_InitStructure.USART_Mode = (USART_Mode_Tx|USART_Mode_Rx);
USART_InitStructure.USART_BaudRate = u32BaudRate;
USART_OverSampling8Cmd(USART3, DISABLE);
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_RTS_CTS; 
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_Init(USART3, &USART_InitStructure);  
USART_ITConfig(USART3,USART_IT_TXE, DISABLE);
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_Cmd(USART3, ENABLE);
Run Code Online (Sandbox Code Playgroud)

主要...

uint8_t UART_TransmitData(void)
{
   if(u8IntTxFlag==1)
   {
       u8IntTxFlag=0;
       USART_ITConfig(USART3, USART_IT_TXE, ENABLE);      
       return TRUE;
   }
   return FALSE;
}


void USART3_IRQHandler(void)
{
   /* Implemented full duplex serial communication */
   /*  UART RX …
Run Code Online (Sandbox Code Playgroud)

c embedded stm32 usart

7
推荐指数
1
解决办法
4229
查看次数

如何在C中创建3位变量作为数据类型?

我可以typedef charCHAR1其是8位.但是如何将3位变量作为数据类型?

c

6
推荐指数
1
解决办法
2828
查看次数

为什么 lint 向 (ineffassign) 发出警告无效分配

ineffectual assignment to "cfg"在 line 处收到 lint 警告cfg := &utils.Config{}。这是为什么 ?

    cfg := &utils.Config{}
    env := os.Getenv("TEST")
    if strings.EqualFold(env, "INT") {
        cfg = utils.GetIntConfig()
    } else {
        cfg = utils.GetConfig()
    }

    cgw.Cgw(cfg)
Run Code Online (Sandbox Code Playgroud)

lint go

4
推荐指数
1
解决办法
954
查看次数

警告:0标志被忽略,精度和'%x'gnu_printf格式

我在C中编译时收到以下警告

   ../tcpuip/uip_arp.c: In function 'display_arp_table':
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
    rintf format
    ../tcpuip/uip_arp.c:547: warning: '0' …
Run Code Online (Sandbox Code Playgroud)

c printf warnings data-structures

2
推荐指数
1
解决办法
5998
查看次数

rand()没有给出指定数字内的值(在C中)

我只是希望它给我1到6之间的值,但它给了我这个:

P1d1 = 1445768086

P1d2 = -2

P2d1 = 1982468450

P2d2 = 198281572
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (){

srand(time(NULL));

/*Player 1*/

int P1d1 = 1 + rand() % 6;  //Rolls Player 1's first die; random # between 1-6
int P1d2 = 1+ rand() % 6;  //Rolls Player 1's second die; random # between 1-6
int P1total = P1d1 + P1d2;  //Takes total of both rolls

/*Player 2*/

int P2d1 = 1 + rand() % 6; …
Run Code Online (Sandbox Code Playgroud)

c random

0
推荐指数
1
解决办法
81
查看次数

十六进制的无符号长整数的值是多少

我有这个变量

unsigned long long latitude = 29.47667;
Run Code Online (Sandbox Code Playgroud)

当我将此值转换为这样的数组时

    ar[7] = (uint8_t)((latitude >> 56) & 0xFF);
    ar[6] = (uint8_t)((latitude >> 48) & 0xFF);
    ar[5] = (uint8_t)((latitude >> 40) & 0xFF);
    ar[4] = (uint8_t)((latitude >> 32) & 0xFF);
    ar[3] = (uint8_t)((latitude >> 24) & 0xFF);
    ar[2] = (uint8_t)((latitude >> 16) & 0xFF);
    ar[1] = (uint8_t)((latitude >> 8) & 0xFF);
    ar[0] = (uint8_t)(latitude & 0xFF);
Run Code Online (Sandbox Code Playgroud)

然后使用tcp socket将其发送到服务器.当我发送时,我以十六进制打印值,然后我0x1d全部休息.

如何在将unsigned long long转换为int时将确切的值发送到服务器.

c embedded floating-point printf

-2
推荐指数
1
解决办法
585
查看次数