-
代码首先回顾代码/**点亮LED:GPF4*/.text//表明它是代码段.global_start_start:/*配置GPF4为输出引脚*把0x100写到地址0x56000050上,熄灭led*/ ldrr1,=0x56000050 /*将这个地址存放到r1中*/ ldrr0,=0x100 /*或者使用movr0,#0x...[详细]
-
当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口...[详细]
-
计算机的通信分为:串行通信和并行通信串行通信分为:异步通信和同步通信异步通信:发送设备与接受设备有各自的时钟,通信时双方的时钟尽量保持一致,以字符为单位进行传输,字符与字符间的时间间隔是任意的,每个字符中的各位是以固定时间传送的,异步通信的数据格式:起始位,7位数据,校验位,停止位(这10位数据就是所说的字符,叫1帧数据)同步通信:建立发送方时钟对接收方时钟的直接控制...[详细]
-
刚到手一块stm32f103c8t6的板子,刚好最近在用stm32cube,直接用cube配置了一个led灯闪烁的工程,用keil+stlink下载进去一切正常,用的SWD模式。然后问题出现了,keil不识别板子了,options-debug里面stlink的setting界面也找不到目标,SWdevice是空的。最开始一度认为可能是硬件错误,排除了接线、驱动错误后(因为第一次...[详细]
-
#defineF_CPU4000000//晶振频率#defineBAUD9600//波特率voiduart_init(void){UBRRH=(F_CPU/BAUD/16-1)/256;//设置波特率UBRRL=(F_CPU/BAUD/16-1)%6;UCSRB=0x98;//使能RX,...[详细]
-
程序://TIMER_A连续计数模式#includemsp430x14x.hvoidmain(void){WDTCTL=WDTPW+WDTHOLD;//StopWDTP6DIR|=BIT2;P6OUT|=BIT2;//关掉电平转换(此处不必纠结)P3DIR|=BIT4;//P3....[详细]
-
一。USMART调试组件的基本过程USMART是由ALIENTEK开发的一个灵巧的串口调试互交组件,通过它你可以通过串口助手调用程序里面的任何函数,并执行。1.什么是USMART可以通过串口给单片机发送命令,单片机收到命令后调用相应的函数,这样可以加快程序的调试进度,更加方便。2.USMART的特点需要用USMART调试的函数需要在usmart...[详细]
-
1、单片机每次的确只能接收1个字节,但由于串口的速度实在太低,通常都在115200bps以下(即使用了同步方式也只能达到1Mbps)。注意,是bps,位/秒,而不是字节/秒,这就是串行通信,要至少8个bps时间才能接收一个完整的字符,事实上,加上起始位等,8个位往往传送不了一个字节(不知道我的理解是不是有偏差),这就是说,速度至少还要再慢上8倍。2、带有USART的...[详细]
-
简介:最近做了一些STM32和SD卡通信的一些思考,一直以来SD的驱动和应用困扰了我很久,寒假的时候看到SD简化版物理层协议的时候就傻掉了,看到SD的驱动快3000行的代码也动摇了。这几天几种地看了一下SD卡的相关内容,总结了一些体会,感觉也没有那么恐怖了。我决定从分层上来讨论SD的驱动和应用,因为这样可以构建一个清晰的逻辑,且不知哪位计算机大师曾说过:一切计算机问题都可以用分层的方法来解决。...[详细]
-
/*名称:按键发音说明:按下不同的按键会是SOUNDER发出不同频率的声音。本例使用延时函数实现不同频率的声音输出,以后也可使用定时器*/#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^7;sbitK1=P1^4;sbitK2=P1^5;...[详细]
-
//**************************//程序说明:stc15f2k60s2采集ds18b20温度数据,并从串口输出//为方便大家调试,特附该程序的项目下载地址://采用的是22.1184M晶振//**************************#includestc15fxxxx.h//调用stc15f系列头文件,下载地址:http://pan.b...[详细]
-
使用的是STM32f103C8T6:64Kflash,在应用程序中通过CAN把接受到的bin写到外置flash的指定地址处。在bootloader中判断一个单独的标志位看程序是否需要升级,如果需要升级,则复制外置flash处的内容到STM32的内置flash的指定地址处。如:bootloader地址:0x08000000UL大小:10K——0x2800——STM32的内置fla...[详细]
-
1.8086/8088为什么采用地址/数据引线复用技术?考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。2.8086与8088的主要区别是什么?8086有16条数据信号引线,8088只有8条;8086片内指令...[详细]
-
您只能通过更改异常级别来更改执行状态。发生异常时可以将执行状态从AArch32更改为AArch64,并且从异常返回时可以将其从AArch64更改为AArch32。在进入异常级别时使用AArch64,在离开异常级别时使用AArch32:如果使用AArch32执行,对任何较低的异常级别能访问的寄存器的高32位的访问,其值是未知的。在AArch32执行过程中不可访问的寄存器,保留他们在AAr...[详细]
-
单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存程序,在系统上电后,CPU可取出这些指令重新执行。只读存储器(ReadOnlyMemory,ROM)中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称只读存储器。向ROM中写入信息称为ROM编程。根据编程方式不同,掩模ROM.在制造过程中...[详细]