
嵌入式软件
念隐
画原理图,画PCB,买元器件,焊电路板,写嵌入式代码,写上位机调试软件,调试整机设备,安装外壳……还有啥是我不能做的?!
展开
-
沁恒 CH32F103C8 (套用STM32 HAL库)CAN总线初始化注意事项
CH32F103C8号称是兼容STM32F103C8的,但在调试CAN总线时,遇到了一些问题。基础代码通过STM32CubeMX生成,但是在执行 void MX_CAN_Init(void) 时始终不能通过。查看沁恒官方的CAN总线测试程序,发现如下操作:uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct){ uint8_t InitStatus = CAN_InitStatus_Failed; uint32原创 2022-01-26 17:31:36 · 5516 阅读 · 0 评论 -
避免microPython解析GPS数据丢精度
GPS定位点数据,一般是6位精度的浮点数其纬度范围可定义为-90~90(-89.999999~89.999999)其经度范围可定义为-180~180(-179.999999~179.999999)但是microPython解析float型,会丢失精度(好像是保留4位小数),因此在解析GPS坐标数据的时候,可以换个思路,将其解析为扩大100万倍的整型,方法如下: def gnssParseValue(value): # 传入的参数是一个字符串,'3158.4608'这样的,解出形如319743原创 2022-01-03 14:10:30 · 549 阅读 · 0 评论 -
GNSS时间转换为UTC+8时间
GNSS时间转换为UTC+8时间NMEA输出的GNRMC数据中,时间信息是格林威治时间,和我们东八区的时间相差八小时,要将其转换为东八区的时间,可以用以下方法:#include "math.h"#include "stdbool.h"#include "stdint.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "time.h"#include <sys/time.h>// 参数举例 t原创 2021-02-08 13:49:51 · 1621 阅读 · 0 评论 -
STM32启动文件中的符号研究:__Vectors、__Vectors_End
STM32的启动文件中,包含了一些可被外部调用的变量,如__Vectors、__Vectors_End等:; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY EXPORT __Vectors EXPORT __Vectors_End EXPORT __Vectors_Size原创 2020-05-27 01:03:26 · 4976 阅读 · 1 评论 -
STM32L071硬件I2C读取AM2320数据
STM32L071硬件I2C读取AM2320数据直接上代码// 2019-01-06 19:11:36 Mony:返回值除以10得到实际的温度、湿度值void fmlAm2320GetValue(int16_t *pTemperature,uint16_t *pHumidity){ #define AM2320_ADDRESS 0xB8 uint8_t IIC_...原创 2019-01-06 19:16:39 · 2938 阅读 · 4 评论 -
STM32F302CB使用HAL库采集PWM频率和占空比
单片机运行在36MHz,以TIM2CH2为输入通道,做如下配置:/* TIM2 init function 由CubeMX生成,定时器初始化*/void MX_TIM2_Init(void){ TIM_MasterConfigTypeDef sMasterConfig; TIM_IC_InitTypeDef sConfigIC; htim2.Instance =...原创 2018-05-02 10:35:50 · 4094 阅读 · 0 评论 -
QT工程文件的条件编译选择与额外的编译参数配置
QTCreator打开.pro工程文件后,依据不同的构建套件创建项目组。在项目组中,点开构建步骤的“详情”,增加一个自己的宏定义,比如:原创 2015-10-09 11:23:42 · 7530 阅读 · 0 评论 -
Linux下实现一个带时标的消息打印
代码如下:void printTimeStampInfo(const char *fmt,...){ va_list arp; struct timeval t; gettimeofday(&t,NULL); printf("[%ld.%06ld] ",t.tv_sec,t.tv_usec); va_start(arp, fmt);...原创 2015-11-05 20:24:30 · 684 阅读 · 0 评论 -
Ubuntu 14.04上安装ia32-libs?
要做嵌入式linux开发,方案提供商方面提供的linux平台是ubuntu 12.04 x64,交叉编译器是arm-fsl-linux-gnueabi-gcc,开发手册上在介绍建立交叉编译环境的时候提到需要安装32位兼容库和libncurses5-dev。But,在Ubuntu 14.04上sudo apt-get install ia32-libs不可能成功,除非添加Ubuntu 13.04的源,原创 2015-07-26 22:27:10 · 650 阅读 · 0 评论 -
关于编译FreeModbus提示 对'pthread_create'未定义的引用 的解决
平台:Ubuntu 14.04 gcc:4.8.2 FreeModbus:1.5.0从sf下载的freemodbus编译到最后,在链接的时候,提示对’pthread_create’未定义的引用解决方法是: 编辑makefile文件第60行,改为:$(CC) $(OBJS) $(LDFLAGS) $(LDLIBS) -o $@重新编译,通过。原创 2015-05-27 17:11:59 · 1969 阅读 · 0 评论 -
【译】RL-RTX(CM3)的任务中不能配置NVIC,否则进入HardFault的原因
RL-RTX(CM3)的任务中不能配置NVIC,否则进入HardFault的原因http://www.keil.com/support/man/docs/rlarm/rlarm_ar_cfgrunpriv.htm运行在特权模式Cortex-M设备的RTX库允许选择用户任务的运行模式。任务可以运行在两个模式:非特权模式——受保护的模式特权模式——不受保护的模式【译注:翻译 2012-06-11 16:19:52 · 2258 阅读 · 0 评论 -
【译】ARM:如何分析DAbt异常
http://www.keil.com/support/docs/3080.htmARM:如何分析DAbt异常本文信息面向:任意版本ARM问题:我的ARM应用无法工作。当我在软件仿真器或者JTAG调试器中运行时,我注意到程序计数器(PC/R15)跳到了DAbt_Handler标签。问:这意味着什么?我该如何找到我程序崩溃的位置?回答:这是默认的Data翻译 2012-06-11 16:18:12 · 12470 阅读 · 0 评论 -
ucGUI加载“完整”外部字库的方法(1)——从外扩NOR Flash中加载
CPU:LPC2478NOR Flash:MX29LV640EBtypedef __packed struct { U8 XSize; U8 XDist; U8 BytesPerLine; const unsigned char GUI_UNI_PTR * pData;} GUI_CHARINFO; 在我的平台下,外部NOR Flash的原创 2012-03-04 21:27:34 · 4154 阅读 · 2 评论 -
LPC2468的USBHostLite挑盘?
硬件环境:LPC2468U2口作为USB HOST一个2G容量的U盘,标着是现代的,格式化成FAT16格式 移植了USBHostLite之后,运行到FAT_Init()函数,返回值不对了,跟踪进去看看,确实读出来的数据与应该读到的数据不符。在此之前,已经验证另一个2G容量的U盘没问题。格式化多次,依然无果,用WinHEX查看两个盘的区别,有点区别,但是并不能说明问题。抓狂了半个原创 2012-01-04 22:10:02 · 2150 阅读 · 3 评论