自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (8)
  • 收藏
  • 关注

原创 ESP32S3在VScode中使用USB口调试

【代码】ESP32S3在VScode中使用USB口调试。

2024-04-19 18:26:59 88

原创 树莓派蓝牙BLE做从机Peripheral

树莓派蓝牙BLE做从机Peripheral

2023-12-01 19:31:11 131

原创 1.ubuntu安装ROS2

Ubuntu 20.04安装ROS2参考ROS2官方安装文档,安装ROS2。安装过程中会遇到如下问题报错 1运行sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg时报错:curl: (7) Failed to connect to raw.githubusercontent.com port 44

2022-05-08 15:21:49 452

原创 Ubuntu 20.04安装ROS2

Ubuntu 20.04安装ROS2参考ROS2官方安装文档,安装ROS2。安装过程中会遇到如下问题报错 1运行sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg时报错:curl: (7) Failed to connect to raw.githubusercontent.com port 44

2022-05-08 15:19:52 1955

原创 STM32启动过程详解

STM32启动过程详解初始化栈顶指针sp将0x08000000 - 0x08000003中的值赋值给sp,由硬件自动完成。执行复位程序Reset_HandlerReset_Handler中先调用SystemInit进行系统初始化,然后调用__main函数。在__main函数中会初始化RW和ZI段,最后跳转到main函数。; Reset handlerReset_Handler P...

2020-01-02 22:41:12 3458

转载 探讨C语言中关键字volatile的含义

原文地址:http://www.jb51.net/article/37489.htmvolatile 的意思是“易失的,易改变的”。这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化。通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx。当CPU把其值放到ebx中后就不会再关心对应内存中的值。若此时其他程序(例如内核程序或一个中断)修改了

2016-08-05 15:09:40 2321

转载 keil(arm)中配置c99方法 及 C99特性

配置方法:option->c/c++->misc controls:--c99附c99特性:在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的...

2016-05-25 17:19:18 22663 1

转载 KEIL MDK中的Code RO-data RW-data ZI-data

Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化。 简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW D

2015-12-30 09:00:33 452

转载 typedef用法

1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义      uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义;      array a声明等价于int a[2]

2015-11-25 12:54:38 356

原创 uCOS-III任务延时全过程

看了几天的uCOS-III多少了解了一点儿,刚开始看的时候只想先了解一下任务怎样从延时中恢复,没想到涉及那么多东西。经过一天的时间整理出一个简单的流程图,算是对这几天的总结吧!

2015-10-20 17:17:16 3133

转载 新型的按键扫描程序,仅三行程序

新型的按键扫描程序不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。对于老鸟,我建议直接看那两个表达式,然后自己想想就会懂的了,也不

2015-09-24 14:34:45 786

转载 USART、SPI、IIC的区别

SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 I2C:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供

2015-09-23 15:36:09 10487 2

转载 STM32普通定时器(TIM2-7)的时钟源

【问题】STM32F103的APB1最大总线时钟是AHB总线时钟的1/2,最大为36MHz,在用ST的库函数(v2.0)的时候,TIM2(普通定时器)的时钟频率为72MHz,不知道原因何在?【问题分析】STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟

2015-09-15 11:31:09 13728

转载 位带操作在stm32中的C语言实现

位带操作在stm32中的C语言实现  首先:  #define BITBAND(addr,bitnum)  ((addr & 0xF0000000) + 0x2000000 + ((addr & 0xFFFFF)   对上句程序的解释: 利用宏定义的方式将位带地址的映射表示出来,该函数有两个参数addr和bitnum,分别是原本的地址

2015-09-10 11:14:23 1449

转载 C/C++ 语言中的表达式求值

经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 要弄清这些,需要理解的一个问题是:如果程序里某处修改了一个变量(通过赋值、增量/减量操作等),什么时候从该变量能够取

2015-06-12 08:36:08 364

转载 关于 内存对齐 && sizeof 的介绍 2 —— 结构体(改)

内存对齐方式的原则 :     1. 成员的对齐是按声明顺序进行的;(这个很重要)==》见例1    2:在VC环境下的默认对齐值为8,PS:因为最大的非自定义类型对齐值为8。    3:由于对齐是按照声明顺序进行对齐的,所以这就里就会出现一些对当前成员对齐方式的影响因素:          为了方便理解,我们这边设定几个变量           A:val_self(成员

2015-06-10 21:50:36 458

转载 关于 内存对齐 && sizeof 的介绍 1——联合体

1:联合对齐: 首先解释一下什么叫做联合体:1:联合体的各个成员都是从同一个地址开始存放,每次只可以存放一个成员。即:它的所有成员相对于基地址的偏移量都为0。2:此结构空间要大到足够容纳最“宽”的成员。3:其对齐方式要适合于联合中所有类型的成员。 其次我们来了解一下 计算联合体的内存分配大小的方法:1:先找出联合体中最“宽”,即占空间最大的成员,计算其分配的空间大小

2015-06-10 21:47:39 432

转载 结构体内存对齐

关于结构体内存对齐内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。一、内存对齐的原因大部分的参考资料都是如是说的:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地

2015-06-10 21:10:37 392

转载 给字符数组赋值的方法

main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的

2015-06-08 09:19:34 1316

转载 const volatile int i = 10

const和volatile放在一起的意义在于:(1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。“const”含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。“volatile”的含义是“请不要做没谱的优化,这个值可能变掉的”,而并非“你可以修

2015-06-08 08:43:17 527

转载 C语言中const的用法

基本解释          const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。  虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。    问题:const变量 & 常量  

2015-06-06 13:49:26 398

转载 C中的volatile用法

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如: volatile int i=10; int j = i; ... int k = i;

2015-06-06 13:31:50 292

转载 堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—  由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)—   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数

2015-06-06 11:38:49 243

Virtual COM Port driver V1.5.0.7z

stm32 usb虚拟串口驱动(win10可用)。支持win7, win8,win10

2021-06-27

Jlink V9固件刷新(stm32F205版)

Jlink V9固件刷新(stm32F205版)。stm32f205版jlink刷固件。经亲测可用,如果是第一次刷新,需要一个好用的jlink。

2020-01-04

si3.5配置.zip

source insight 3.5配置文件,下载之后复制到我的文档直接使用,包含quicker.em。

2019-10-13

si4.0配置.zip

source insight4.0配置文件。下载之后复制到‘我的文档’中直接使用,包含quicker.em。

2019-10-13

C语言实现PID控制直流电机调速(含proteus仿真)

PID调节直流电机转速 c语言实现pid算法控制直流电机转速,转速led显示,可用按键调整转速。

2019-01-05

GLOBAL.CF3

我自己的source insight配置文件

2016-10-20

PID控制直流电机调速(含proteus仿真)

PID控制直流电机调速(含proteus仿真)

2015-06-18

C语言深度剖析

C语言深度剖析 深刻讲解C语言 弥补大学课程的不足

2015-06-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除