自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 实现printf函数,和自定义printf函数,实现多串口输出

一、实现print函数 改写 fputc() 函数既可#if 1#pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 _sys_exit(int x) { x = x; } //重定义fputc函数 int

2021-05-23 16:18:18 1689

原创 位域

使用位域的做法是在结构体定义时,在结构体成员后面用冒号(:)和数字来表示该成员所占的位数。例子int main(){ struct Test { unsigned char a:1 ; unsigned char b:1 ; unsigned char c:2 ; }; struct Test test; test.a = 0; test.b = 1; test.c = 2; printf("a = %d, b = %d, c = %d\n",test.a, test..

2021-04-12 22:32:22 181

原创 解决Github网页加载不出来的问题

第一步:找到C:\Windows\System32\drivers\etc 文件夹下的hosts文件,用记事本打开第二步:通过3个查询网址获取GitHub站点最新IPgithub网址查询github域名查询github静态资源ip第三步:在hosts文件中添加如下内容,网址修改成刚刚查到的网址#github140.82.113.4 github.com199.232.69.194 github.global.ssl.fastly.net185.199.108.153 assets-cdn

2021-03-10 13:29:00 2250

原创 keil5.25版本以上debug退回卡死的问题 encountered an improper argument

当我们debug得很开心之后,点击退回,出现错误encountered an improper argument,然后keil5直接死掉,非得用任务管理器关掉才行。网上大神都说是因为有中文路径,实则不然。但我就想用中文命名文件怎么办?有时候,包含中文路径debug又可以,有时候又出现错误,这是是什么鬼!!!实际上包含中文路径的工程,在退回之前先关闭所有设置的断点,就不会卡死,如下图。先关断点再退回! 先关断点再退回!若包含中文路径,没关断点直接退回就会卡死,令人抓狂的错误弹窗就出现,如下图。若全

2021-03-09 10:57:17 1256

原创 STM32内存与堆栈 IAP Bootloader

概念这里所说的堆栈,是针对单片机所说的“堆”(HEAP)与“栈”(STACK),它们是在内存中开辟的一片拥有特殊用途的区域;这里所说的内存,是指STM32片内的RAM,对于大容量的STM32F10xxx来说RAM的大小为64KB。内存布局时,MDK-ARM编译器将RAM分成4个区域,分别为data区、bass区、堆区、栈区。data区用来存放初始化不为零的全局变量和静态变量;bass区用来存放初始化为零的全局变量和静态变量。只要单片机运转起来且不掉电,data区和bass区的内容长期有效,即全局变量.

2021-03-08 23:39:44 3217 3

原创 统计字符串中整型数的和

#include <stdio.h>#include <stdlib.h>#include <string.h>int sum(char *str); int main(){ char *test_str = "begin 124 45 23 -90 over"; printf("The string is \"%s\"\n",test_str); printf("sum = %d\n",sum(test_str)); return 0;}/**

2021-02-22 18:23:00 254

原创 指针数组,数组指针

int (*p)[5];//数组指针int *p[5]; //指针数组数组指针int (*p)[n];//定义数组指针括号 ( ) 的优先级比方括号 [ ] 高,* 号和 p 构成一个指针的定义,指针变量名为p,int 修饰的是数组元素的类型。数组在这里并没有名字,是个匿名数组。这个一维数组的长度为 n,也可以说指针 p 的步长为 n,执行p+1时,p要跨过n个整型数据的长度。例如:#include "stdio.h"int main(){ char str[3][4] = {{1,

2021-02-22 12:33:52 109

原创 STM32官方封装库下载方法

意法半导体官网的库真难找,找了好久才找到,记录一下,以免忘记。网址:ST官网主要是找到在网站上哪里下载封装库,步骤如下:我用的AD20版本,其他版本操作雷同

2020-11-25 10:36:11 11648 11

原创 sizeof和strlen区别

*strlen(char)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,运行时起作用。**如果你只定义bai没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到’\0’停止。  char aa[10];//cout<<strlen(aa)<<endl,结果是不定的  char aa[10]={’\0’};// cout<<strlen(aa)<<endl,结果为0  char aa[10]=“jun”; //cou

2020-11-21 22:17:01 88

原创 STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间

这是本人学习正点原子的外扩SRAM实验的学习笔记,SRAM芯片和FMC的时序图对新手太不友好了,读了好久才搞明白,赶紧记录一下,接下来直奔主题。读操作一、FMC读时序(FMC输入)下图是STM32的FMC读时序,最重要的是RD非信号,也就是读使能信号。图中的红色箭头,可以理解为两信号之间有关联,然后中间存在一个时延,而这个时延可以通过编程来设置,从而匹配不同速度的外设;时钟信号可以忽略,我画上去只是便于理解,上升沿触发也是我假设的,实际情况不得而知。FMC先送出地址和其他控制信号,然后经(ADDSE

2020-11-17 16:15:29 4164

原创 数据结构绪论

什么是数据结构?指数据元素间的相互联系的结构。一、逻辑结构指数据元素之间的关系。集合结构线性结构树形结构图形结构二、物理结构指数据在存储器中的存储形式。顺序存储结构2.链式存储结构...

2020-11-13 15:29:12 87

空空如也

空空如也

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

TA关注的人

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