- 博客(18)
- 问答 (1)
- 收藏
- 关注
转载 STM32--GPIO八种模式的区别与应用场合
一.概述GPIO全称为通用输入/输出端口。是stm32用于输出信号,输入信号的通道。他有以下八种模式:输入方式浮空输入 GPIO_Mode_IN_FLOATING上拉GPIO_Mode_IPU下拉GPIO_Mode_IPD模拟输入 GPIO_Mode_AIN输出方式开漏输出GPIO_Mode_AF_OD开漏复用GPIO_Mode_AF_OD推挽式输出GPIO_Mode_O...
2019-08-28 11:18:54
1520
转载 const 指针
通过实例来看看const所修饰的指针使用方法: 1、 先看一个普通的指针使用。 形式:int *pTmp 含义:一个普通的指向int类型的指针 int main(int argc, char *argv[]) { int i = 1; int *pTmp = &i; printf("pTmp = %d\n"...
2018-08-19 09:56:46
184
转载 ARM 常见汇编指令
ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。 一、跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令;Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,...
2018-07-24 22:32:42
998
转载 ARM裸机全集之ARM体系结构(学习笔记)
ARM体系结构与汇编指令1.2.1 可编程器件的编程原理1.2.1.1 电子器件的发展方向模拟器件-数字器件ASIC-可编程器件1.2.1.2.可编程期间的特点CPU在固定频率的时钟控制下节奏运行CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的本质是一串由0和1组成...
2018-07-24 22:17:40
589
转载 ARM汇编指令集
ARM汇编指令集指令、伪指令(汇编)指令:是机器码的助记符,经过汇编器编译后,由CPU执行。(汇编)伪指令:用来指导指令执行,是汇编器的产物,最终不会生成机器码。 两种不同风格的ARM指令ARM官方的ARM汇编风格:指令一般用大写,Windows中的IDE开发环境。GNU风格的ARM汇编:指令一般用小写。 ARM汇编的特点1. LDR/STR架构.ARM...
2018-07-24 22:15:17
278
原创 嵌入式C语言---struct & union
1、struct没有结构体之前,在C语言中,数据的组织依靠:变量+数组。最初最简单的时候,只需要使用基本数据类型(int char float double)来定义单个变量,需要几个变量就定义几个。后来情况变复杂了,有时需要很多意义相关的变量(譬如需要存储及运算一个班级的学生分数)这时候数组出现了。数组解决了需要很多类型相同、意义相关的变量的问题。但是数组是有限制的。数组最大的不足在于,一个数组只...
2018-06-10 19:36:54
424
原创 嵌入式C语言---swap经典
1、形参和实参中的swap#include <stdio.h> void swap1(int a, int b);void swap2(int *a, int *b);int main(void){ int a = 10, b = 9; printf("before: a=%d b=%d\n",a,b); swap1(a,b); swap2(&a,&b); printf...
2018-06-10 19:34:51
496
原创 嵌入式C语言--- ++符号与指针结合
*p++ *++p (*p)++ ++(*p)1、#include <stdio.h> int main(void){ int a[5] = {555, 444, 333, 222, 111}; int *p; p = a; printf("%d\n",*p++); printf("%d\n",*p); return 0;}555444*p++相当于 *(p++)(虽然* ++处于...
2018-06-08 11:16:39
294
原创 嵌入式C语言---三大循环理解
一、用法1、for循环:for (循环控制变量初始化; 循环终止条件; 循环控制变量增量){ 循环体}int i;for(i = 0, sum =0; i < 10; i++){ sum += i;}for循环执行步骤:1、先执行虚幻控制变量初始化2、执行循环终止条件,如果为真,执行循环体,进入第3步;如果为假,退出循环。3、执行循环体。4、执行循环控制变量增量,转入第2步。2、do whi...
2018-06-05 11:09:50
1325
原创 嵌入式Linux中常见命令
Linux 常用命令*ls (list,列表)作用:使用列表的方式把当前文件夹的文件显示出来 ls -a (all)显示所有的文件,包括隐藏文件 ls -l (long)以详细信息的方式显示 ls -al ls -la ls -a -l ls -l -a 都是可以的,已详细的信息显示所有文件*cd (change directory 更改目录)作用:用来切换目录涉及相对路径和就绝对路径相对路径:以...
2018-06-03 19:58:24
551
原创 UCOS III 互斥信号量解决优先级反转问题
在可剥夺性的内核中,当任务以独占方式使用共享资源的时候,会出现低优先级任务高于高优先级任务运行的情况,这种情况叫做优先级反转,对于实时操作系统而言,这是一场灾难,下面我们来说说优先级反转的典型环境. 我们假设有三个任务a,b,c,a优先级高于b,b优先级高于c,a和c都需要访问一个共享资源s,保护该资源的信号量为互斥信号量, 假设当前任务c申请了信号量访问s,还没有释放,此时...
2018-04-29 17:29:12
1339
原创 UCOS III 中断管理
void USART1_IRQHandler(void) //串口1中断服务程序 { u8 Res;#ifdef SYSTEM_SUPPORT_OS OSIntEnter(); #endif if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d ...
2018-04-25 10:38:47
860
1
原创 UCOS III 钩子函数
钩子函数一般主要是用来扩展其他函数(任务)功能的,钩子函数有如下几个: 1、OSIdleTaskHook(),空闲任务调用这个函数,可以用来让CPU进入低功耗模式 void App_OS_IdleTaskHook (void) 每次运行空闲任务时,调用这个函数,可知CPU的使用情况 2、OSInitHook(),系统初始化函数OSInit()调用此函数。 ...
2018-04-24 11:37:31
1629
转载 UCOS III 系统内部任务
在 UCOSII 中有两个系统任务:统计任务和空闲任务,在但是UCOSIII中系统内部任务扩展到了5 个 。空闲任务、时钟节拍任务、统计任务、定时任务、中断服务管理任务、钩子函数 。1.空闲任务:OS_IdleTask(),在os_core.c 文件中定义。调用 OS_Init()初始化UCOS 的时候就会被创建。在 OS_Init() 中 调 用 了 函 数OS_IdleTaskInit() v...
2018-04-24 10:49:32
469
原创 UCOS III 常见函数(更新ing)
1. OSInit(&err); //初始化UCOSIII 在系统任务创建之前,进行系统初始化2. OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块 (CPU_CHAR * )"start task", //任务名字 (OS_TASK_PTR )start_task, ...
2018-04-23 17:29:20
993
原创 UCOS III任务创建
创建任务就是将任务控制块、任务堆栈、任务代码等联系在一起,并且初始化任务控制块的相应字段。在UCOSIII中我们通过函数OSTaskCreate ();来创建任务,OSTaskCreate();函数原型如下(在os_task.c中有定义)。创建一个任务之后,刚创建的任务就会进入就绪状态,注意!不能够在中断服务程序中调用OSTaskCreate ();函数创建任务。 创建任务注意一下参数:任务控制块...
2018-04-23 17:22:07
895
原创 UCOS III 任务堆栈理解
UCOS III在创建任务时,调用OSTaskStkInit函数,以初始化正在创建的任务的堆栈框架。1;堆栈就是一段连续的空间。用于存储数据的,在c计算机中有很多应用,比如发生中断时保存现场,c语言函数调用时保存现场和临时变量。2;堆栈指针就是一个数据指针。有时候计算机自己更改其指针指向的位置来保存数据,如中断时,有时候我们程序员更改其值,比如ucos操作系统做任务切换时。堆栈作用的就是用来保存...
2018-04-23 17:06:16
3172
1
空空如也
如何实现CC2530与C51的串行通信
2017-04-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人