加载中…
个人资料
从入门到放弃
从入门到放弃
  • 博客等级:
  • 博客积分:0
  • 博客访问:492,754
  • 关注人气:57
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
分类: C/Cpp
关于VScode设置大括号格式的做法,设置路径:
File->Preferences->Settings->Extensions->C/C++->c_Cpp: Clang_format_fallback Style

默认是visual code说明:
Name of the predefined style used as a fallback in case clang-format is invoked with style 'file' but the .clang-format file is not found. Possible values are Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, none, or use {key: value, ...} to set specific parameters. 

For example, the 'Visual Studio' style is similar to: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCase
一、符号位
  符号位为每个字节的最高位。最高位1为负数,0为正数。
  负数在内存是以补码的方式存储的。

二、负数的计算
  计算方式:原码->反码->补码
  例如:十进制-8
  原码(负数符号位为1):10001000;
  反码(符号位不变,数值位分别“按位取反”):11110111;
  补码(反码的末位加1):11111000。
  因此-8在8位机中用11111000表示
分类: C/Cpp
//keil中默认是不支持匿名结构体的,需要编译指令#pragma anon_unions指名。

#pragma anon_unions 
typedef union { 
        unsigned int num; 
        struct { 
                unsigned int nLow        :8; 
                unsigned int nHigh       :8; 

对于很多刚开始接触电源变压器产品设计的新人工程师来说,最需要做的就是要扎实巩固变压器计算相关的基础知识,并能够按照电源变压器的不同分类,进行新产品的研发和调试。其中,正激式电源变压器反激式电源变压器作为两大类型,是目前市面上最常见的两种变压器形式,这两种变压器都有哪些不同?应该如何加以区分呢?

 其实想要区分正激式电源变压器和反激式变压器,从结构上来区分是最容易的。工程师在

标签:

microlib

retarget.c

printf

c

重定向

分类: C/Cpp
小结:
1. 使用C++,不能再使用MicroLIB,MicroLIB不支持C++,会报错;
2. 使用MicroLIB,会自动关闭半主机模式,重定向仅实现putc和getc即可
3. 不使用MicroLIB,需要手动关闭半主机模式;
4. 关闭半主机模式(ARM Compiler 5版本):#pragma import(__use_no_semihosting_swi)
5. 关闭半主机模式(ARM Compiler 6版本):__asm('.global __use_no_semihosting\n\t');
6. ARM Compiler 6版本关闭半主机模式需要实现retarget.c中的好几个函数,下面会贴出代码
7. C++模板使用Template,需要使用ARM Compiler 6版本
MSP和PSP 的含义是Main_Stack_Pointer 和Process_Stack_Pointer,在逻辑地址上他们都是R13;

权威手册上说的很清楚PSP主要是在Handler的模式下使用,MSP主要在线程模式下使用(当然你在线程模式下也可以调用PSP,需要你做特殊的处理);

这意味着同一个逻辑地址,实际上有两个物理寄存器,一个为MSP,一个为PSP,在不同的工作模式调用不同的物理寄存器。

Cortex-M3内核有两个堆栈指针:MSP-主堆栈指针和PSP-进程堆栈指针,在任何一个时刻只能有一个堆栈指针起作用,也就是说任何一个时刻只能使用一个堆栈指针,要么使用MSP,要么使用PSP。何为堆栈指针,其实就是普通的指针,只是他们指向两个不同的堆栈。

标签:

bootloader

app

cotex-m3

stm32

用户代码区的第一个字用于存放栈顶地址(MSP Main stack pointer)

用户代码区第二个字为程序开始地址(复位地址)

注意:

heap_1.c 使用大数组,可申请,没释放,系统使用创建消息量、定时器等也基本不需要释放;

heap_2.c使用大数组,可申请,可释放,但是不会合并相邻空闲块,会产生碎片;

heap_4.c使用大数组,可申请,可释放,相邻区块可以合并;

heap_3.c

分类: C/Cpp
标签:

python

struct

初学习python,需要按协议组成一个数据帧,但是对多字节、有符号、大小端等C语言中的概念在python中没有这样的概念,多方考虑无从下手。同事告知使用python中的struct类可解决,果然,很好用!就不单独整理了
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有