单片机、C语言、汇编语言
汇编语言、C语言、单片机芯片结构、单片机SDK工具
瑞莱科技
一旦选择相信,一切皆有可能!
展开
-
HEX文件和BIN文件的区别
HEX文件和BIN文件的区别原创 2024-03-04 15:35:49 · 876 阅读 · 0 评论 -
中断服务函数的作用
中断服务函数里面写的是一些需要定期处理的重要的事情,处理完中断函数就继续返回到主程序执行。原创 2023-09-11 09:05:56 · 236 阅读 · 0 评论 -
UART串口的8倍过采样和16倍过采样原理
由于在空闲状态时,传送线为逻辑“1”状态,而数据的传送总是以一个起始位“0”开始,所以当接收器检测到一个从"1"向"0”的跳变时,便视为可能的起始位(要排除干扰引起的跳变);关于接收器的设计最主要的一点是如何提高采样的准确率,最好是保证采样点处于被采样数据的时间中间点。2. 当检测了8个时钟周期后,到达t2,此刻,若前面的8个周期都是低电平,则认为检测到了起始脉冲。否则就认为是干扰,重新检测。3,在检测到起始位后,再计数16个采样时钟周期就到达了第一个数据位的时间中间点t3在此刻采样数据并进行保存。原创 2023-09-07 09:03:13 · 2276 阅读 · 1 评论 -
逻辑符号 的解释
逻辑符号 的解释| 、||、 &、&&、~、 !| 按位或|| 逻辑或& 按位与&& 逻辑与~ 按位取反! 逻辑非原创 2022-05-06 11:05:42 · 2514 阅读 · 0 评论 -
int main(void)是做什么用的?
下面是一个常规C++程序的写法:int main(void){ return 0;}int main(void)称为函数头{}中间的内容是函数体return 0; 这一句称为指令int 是函数返回值的类型,现在返回值是整形mian后()中的是main函数的参数,现在()中为void表示无参数,也可以不写void如果写成下面这样:main(){ }这样也可以编译过去,这个函数头表示,没有返回值,所以不用谢return 0;而且也没有参..原创 2022-01-03 13:53:06 · 11262 阅读 · 1 评论 -
汇编语言 B LOOP
B的含义:一般在函数内部跳转用B无条件跳转例子:LOOP B LOOP在汇编中,标号LOOP代表一个地址,B LOOP 就是表示无条件跳转到标号LOOP 处执行代码,这样就可以实现一个循环。...原创 2021-10-23 16:44:49 · 1496 阅读 · 0 评论 -
汇编指令 LDR与MOV的区别
LDR:变量都是存放在RAM 中的,那每个变量都有值,我们想要知道这个变量的值,就可以用LDR,从RAM 的对应地址中把这个值加载出来。MOV:MOV 可以把一个寄存器的值送到另外一个寄存器,但是LDR 一个是加载比255 大的立即数,另外就是从内存中读数据。...原创 2021-10-16 15:55:00 · 593 阅读 · 0 评论 -
汇编指令 MOV 和MOVS这两条指令有什么区别?
带S 的指令执行结果会影响标志位,不带S 的指令执行结果不会影响标志位,影响标志位主要体现在标志位的变化情况。原创 2021-10-16 15:44:44 · 1680 阅读 · 0 评论 -
汇编指令 BCC/BLO
写BCC 或者写BLO 都可以,这条指令是C=0 跳转,CMP R0,R1 比较,也可以说R0<R1 跳转。例子:MOVS R0,#5MOVS R1,#10CMP R0,R1BCC Label;用户代码1Label;用户代码2原创 2021-10-16 17:15:08 · 5602 阅读 · 0 评论 -
static与 extern 的用法
static 修饰实际开发中,我们通常将不需要被其他文件调用的函数用static 关键字来修饰,static 能够将函数的作用域限制在当前文件中,在其他文件中无效。比如说我们在main.c 中写了这两个函数,函数A和函数B,这两个函数用static 修饰,那么如果有function.c 文件中的函数想调用函数A是调用不的但是如果不用static修饰的话我们就可以是用extern 引用的方式让function.c 中的函数来调用的。extern变量申明C语言中extern 可以置于变量或者函数前.原创 2021-10-10 22:00:21 · 287 阅读 · 0 评论 -
C语言指针 (3)指针数组和数组指针
指针数组int *p1[5];数组指针int (*p2)[5];代码3-1#include<stdio.h>int main(){ char str[] = "I love my job!"; char *target = str; int count = 0; while(*target++ != '\0') { count++; }.原创 2021-07-19 18:19:23 · 147 阅读 · 0 评论 -
如何配置.h头文件include“”相对路径
编译工程时,找的是当前main.c文件下的.h文件,如果当前路径下没有就会报错,当前路径用.\表示,上一级目录用..\表示。 如果你的main.h文件在main.c的上一级目录中Include 文件夹内,这样来表示:#include “..\Include\main.h”总结:编译工程时找的是当前程序文件目录下的.h文件。...原创 2021-09-30 11:57:35 · 4380 阅读 · 0 评论 -
C语言指针(2)数组与指针
先看实例:代码2-1#include <stdio.h>int main(){ int a; int *p = &a; printf("请输入一个整数:"); scanf("%d", &a); printf("a = %d\n", a); printf("请输入一个新的整数:"); scanf("%d", p); printf("a =原创 2021-07-18 17:33:33 · 132 阅读 · 0 评论 -
C语言指针(1)指针
1、定义指针定义一个char类型的指针,让它指向char变量定义一个int类型指针,让它指向int变量指针就是地址!!!指针定义必须指向某一个地址,不然就会成为野指针,野指针具有不确定性,切记!!!我们看教材的时候定义指针一般都用*p,其实完全可以自己定义,我用的*good、*bad也是一样的。直接上代码:#include<stdio.h>int main(){ char a = 'h'; int b = 110; char *go原创 2021-07-17 21:03:55 · 316 阅读 · 0 评论 -
C语言指针(4)指针和二维数组
代码4-1#include <stdio.h>int main(){ int array[4][5] = {0}; printf("sizeof int : %d\n", sizeof(int)); printf("array: %p\n",array); printf("array +1: %p\n", array + 1); return 0;}int array[4][5]={原创 2021-07-31 09:21:23 · 159 阅读 · 0 评论 -
16位、32位、64位单片机数据类型占用空间对比
对比如下图所示:原创 2021-11-06 15:47:30 · 1111 阅读 · 0 评论 -
MOV 和MOVS 这两条指令有什么区别?
MOV 和MOVS 这两条指令有什么区别呢?带S 的指令执行结果会影响标志位,不带S 的指令执行结果不会影响标志位,影响标志位主要体现在标志位的变化情况原创 2021-10-26 21:45:05 · 8671 阅读 · 1 评论 -
APSR 标志位
APSR 标志位一共有4 个,分别是N Z C VN 标志位:运行完结果如果是正数、0、大于、等于该位置0,如果是负数或者小于该位置1Z 标志位:运行完结果如果是0 该位置1,如果不是0,该位置0C 标志位:加操作发生进位或者减操作没有发生借位该位置1, 加操作没有发生进位或者减操作发生借位该位置0V 标志位:运行结果溢出该位置1,运行结果没有溢出该位置0Z 标志位:指令运行完结果如果是0 该位置1,如果不是0,该位置0假如R0 里面数据是0MOVS R0,R0那原创 2021-10-26 21:44:07 · 2748 阅读 · 0 评论 -
汇编指令 EXPORT EXTERN
EXPORT:声明为全局变量EXTERN:声明为外部变量原创 2021-10-12 10:25:26 · 834 阅读 · 0 评论 -
Keil出现报错warning: A1581W: Added 2 bytes of padding at address 0xd2
在地址0xd2增加2字节的填充 ,STM32单片机汇编语言要4字节对齐,不够4个字节,所以要填充2个字节。解决办法:另起一行,按Tab键,加NOP就可以了原创 2021-10-12 10:08:20 · 2393 阅读 · 0 评论 -
汇编指令-跳转指令B BEQ BNE BCC
例子:MOVS R0,#1MOVS R1,#2CMP R0,R1BNE Label;用户代码1Label;用户代码2BNE 是Z=0 跳转,不相等的时候跳转。Z 标志位:运行完结果是0 ,Z置1,结果不是0,Z置0。CMP R0,R1,比较运算后Z=0,那么就跳转到用户代码2执行。...原创 2021-10-12 08:33:39 · 16718 阅读 · 0 评论 -
STM32F030C8T6单片机PWM呼吸灯寄存器配置
STM32F030C8T6单片机PWM呼吸灯寄存器配置:TIM3_CR1:控制寄存器BIT8~BIT9:CKD与外部输入时钟有关,不使用外部时钟输入,所以不操作BIT8~BIT9,设置为00BIT7:ARPE预装使能,置1有缓冲器,置0无缓冲器。BIT6:CMS:默认边沿对齐模式,使用边沿对齐模式,默认值00BIT5:DIR:计数器的计数方向,默认0,表示向上计数。BIT4:OPM单脉冲模式使能,默认0,默认不使能单脉冲模式。BIT3:URS更新请求源,默原创 2021-10-11 13:27:13 · 2639 阅读 · 0 评论