嵌入式开发
嵌入式开发
羽墨志
不经历千百遍的调试,怎能体会成功时那一刹那的欢喜。
展开
-
Debug | error: #134: expected a field name
error: #134: expected a field name原创 2022-04-09 18:48:27 · 2467 阅读 · 0 评论 -
串口打印函数引起芯片工作异常
单片式开发中的串口调试原创 2022-02-14 12:13:39 · 3854 阅读 · 0 评论 -
嵌入式应用中的数据校验
为保证嵌入式应用中数据通信的准确性,通常需要对传输的数据进行校验。这里介绍一种累加和校验算法的实现。发送方将所有目标数据进行累加求和,对求和结果取反作为校验值,连同目标数据一起发送给接收方。接收方将接收到含有校验和数据进行累加求和,求和结果加一为零则说明数据传输正确。算法原理是按位取反后的数据再与原来的数相加会把所有位都变为1,此时再把相加结果加一就会导致数据溢出,此时相加结果的所有数据位都会变为0。/* * 串口通信常用的几种数据校验和方式 * By 羽墨志 */#include &l原创 2021-10-08 17:49:44 · 439 阅读 · 0 评论 -
STM32 | 基于 HAL 库实现 DMA 驱动 GPIO 高速翻转
项目中有一款点阵式液晶驱动芯片,需要用 IO 口翻转来实现高速串转并传输,主控芯片为 STM32F103RCT6。如果直接采用库函数进行IO的翻转不仅速度上满足不了要求,还会占用大量时间影响性能,导致时序上的错误。DMA可以在没有控制器的干预下进行数据的传输,因此决定采用DMA方式来驱动IO。本文以 HAL 库实现 DMA 驱动 GPIO 高速翻转为例说明DMA的配置过程,当然也可以改变 dma_buff 数组以实现其他任意时序的输出。一、STM32CubeMX 配置SYS Mode and Con原创 2021-05-08 11:43:54 · 5119 阅读 · 14 评论 -
STM32CubeMX | STM32 串口通信以及串口重定向
一、串口配置管脚以及参数配置使能串口中断配置完成并保存后,点击【GENERATE CODE】重新生成代码。二、串口发送串口发送调用HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)函数即可。定义一个存放串口数据发送的缓冲区:/* USER CODE BEGIN 0 */uint8_t tx_buff[]="We原创 2021-04-13 23:03:32 · 5593 阅读 · 5 评论 -
STM32CubeMX | 新建 Keil工程
STM32CubeMX 是 ST 官方推出的一款代码生成工具,使用 STM32Cube 可以加速新产品的开发过程。本文以点亮一个 LED 灯为例,演示如何使用 STM32CubeMX 为 STM32F103CB 生成 Keil 工程以实现 LED 灯的闪烁功能。新建工程打开 STM32CubeMX 软件后,点击File,选择New Project。选择芯片型号在左侧的 Part Number中输出目标芯片的型号,支持部分输入以便快速定位所选芯片。配置SYS配置RCC原创 2021-04-12 23:27:52 · 871 阅读 · 0 评论 -
羽墨志 | 拷贝数字示波器中的截图
由于实验需要,经常要保存示波器画面信息。直接用手机拍摄费时费力且效果欠佳,一是要寻找合适角度,二是示波器屏幕反光效果太强,拍摄时会把反射的背景一起拍下来。台湾固纬 GDS-3354数字存储示波器本身就自带截图功能,直接单击屏幕右上方的【Save】按钮就可以把当前画面保存下来。这里主要是记录一下将保存的图片拷贝出来的步骤:将USB存储设备插入示波器的USB接口;单击面板上的【Utility】按钮,选择下方菜单栏中的【辅助应用】即可看到当前以保存的所有图片,使用【VARIABLE】旋钮切换图片。图片原创 2020-10-05 17:16:08 · 1352 阅读 · 0 评论 -
ESP8266 Flash的分布及其读写操作
读写操作API基本操作(1) spi_flash_erase_sector 功能 擦除 Flash 的某个扇区。 函数定义 SpiFlashOpResult spi_flash_erase_sector (uint16 sec) 参数 uint16 sec- 扇区号,从0 开始计数,每个扇区大小为4KB。 返回值 SpiFlashOp...原创 2018-08-03 16:24:43 · 13877 阅读 · 8 评论 -
机智云平台的SOC方案固件远程升级(OTA)
修改软件版本号,重新编译,生成新的固件。 修改gizwits_product.h中的宏定义 /** * Gagent minor version number for OTA upgrade * OTA hardware version number: 00ESP826 * OTA software version number...原创 2018-07-11 09:33:26 · 2471 阅读 · 0 评论 -
ESP8266 GPIO16的配置
ESP8266的GPIO16属于RTC模块,不能触发中断,与其他GPIO的配置方式不同,配置函数如下:void gpio16_output_conf(void); //初始化为输出模式void gpio16_output_set(uint8 value); //输出指定电平void gpio16InputConf(void); //配置为...原创 2018-06-28 09:18:02 · 6563 阅读 · 7 评论 -
CC2530裸机编程-定时器1
1. 测试端口LED的配置//以P0_6端口为例#define LED P0_6void Hal_LEDInit(void){ P0SEL &= ~0xC0; //通用IO P0DIR |= 0xC0; //输出模式 LED = 0;//初始状态为灭}2.设置系统主时钟void Hal_SystemClockInit(void){ CLKCONCMD &= ~原创 2017-09-09 21:11:13 · 1714 阅读 · 0 评论 -
【keil uvision4】 Debug系列
Error: L6218E: Undefined symbol **(referred from sys_main.o). 【情景还原】 /******************************************************************file1:main.c **********************************************原创 2017-12-07 17:53:42 · 1430 阅读 · 0 评论 -
一种根据MAC地址自动生成设备名称的方法(一)
#include <stdio.h>typedef unsigned char u_int8;typedef unsigned int u_int32;void setDeviceName(u_int8 *name, u_int8 *macAddr);int main(){ u_int8 deviceName[16] = "Device_11111"; u_int8 macAdd原创 2017-12-14 14:29:47 · 3223 阅读 · 0 评论 -
IAR | Error[Pa045]: function “xxx“ has no prototype
使用IAR编译时出现Error[Pa045]: function "M10_GPIO_Init" has no prototype编译错误,网络上大多数的解决方案是在Options--->C/C++Compiler--->Language1选项中取消勾选Require prototype。根据编译错误信息提示的内容来看,这是由于函数没有函数声明导致的。在IAR中勾选Require prototype选项,意味着除main函数外的所有函数都需要函数声明。因此去掉 Require prototy原创 2020-09-24 09:31:51 · 2671 阅读 · 0 评论 -
STM8S精确延时+LED闪烁
初学者,写的一个LED闪烁程序,延时一秒,用示波器看过!#include"iostm8s105c4.h"#define LED PC_ODR_ODR1void GPIO_Init(){ PG_DDR_DDR0=1; PG_CR1_C10=1; PG_CR2_C20=0; PG_ODR_ODR0=0; PC_DDR_DDR1=1; PC_C原创 2015-08-03 22:50:58 · 5943 阅读 · 0 评论 -
IAR for STM8 学习笔记(1)--数据类型
数据类型(编译器支持 ISO/ANSI C 基本数据类型和一些附加数据类型)1.1. 整型数据bool 数据类型在C++语言里是默认支持的。如果你在C代码的头文件里包含stdbool.h, bool数据类型也可以使用在C语言里。也可以使用布尔值 false和 true。1.2.浮点数据类型:1.3.指针类型:指针有数据指针和函数指针。1、数据指针:原创 2015-07-23 15:33:55 · 2698 阅读 · 0 评论