概述
学了两年单片机了,初三一年的电路基础知识,发现越来越不够用了,但又感觉看那些全是公式的大学的电路基础又有点傻x,看半天,没一个讲的明白的,估计只有写书的那人,能看明白,真正买书的看的明白的,估计也不多。于是乎,我想出了一个更高科技的办法——试验呗 毛主席说过实践是检验真理的唯一标准,所以放下那些晦涩难懂的书本,拿起面包板,万用表,示波器做试验,应该是我这样只有初三一年电路知识的人唯一的出路 所以,说干就干。目前来说,手上有的就那么点东西,能做啥试验,就做啥试验。以后随着买新器件或产品,再做新器件的试验。日志也会随着更新。
试验设备
器件:电阻电容若干,三极管,二极管,也有一些,场效应管不多,洞洞板,当然是必备的,剩下的就是1种电感,两三种运放,和555。目前来说就这些玩意。
试验板:at89s52试验板 1块,STM8试验板 1块,STM32F103ZE试验板 1块,STM32F103VE试验板 1块。自制STM32F103RB试验板 1块
设备:优利得万用表 1块,普元示波器 1台,广州黄花电烙铁 1把,焊锡丝若干。
如果这些算我的资产的话,那我现在的身价也近万了
关于试验
试验目的,试验使用器件,试验电路图,波形图,结论。反正越详细越好,能多写就多写,写不出来就编 写的出来就写。但尽量以事实为准,坚决不弄虚假的东西糊弄领导,其实也没有领导让我干这些
试验方面,电阻电容电感对电压波形影响,数字电路方面,驱动电路方面,开关电源方面,如果能力达到的话,可以初探一下无线,嘿嘿。
试验1
目的:单片机io翻转速度与波形样式对比
设备:所有试验板,示波器。
方法:在主函数中针对一组IO口,置高置低,中间不加任何延时或取反
电路图:没有直接将示波器探头接入管脚。
编译环境:keil3为at89s52,iar为stm8和stm32,
上图可见at89S52在12M晶振运行的情况下,程序使用c写的
内容为
void main()
{
P1=0xff;
while(1)
{
P1=0x00;
P1=0xff;
}
}
[page]
这是用汇编写出来的效果,可见频率都一样,而占空比却变了
以下为汇编程序
org 0000h
ajmp main
org 0080h
main:
loop: mov p1,#0ffh ;全不亮
mov P1,#000h
jmp loop
end
后来我又将c语言改成
void main()
{
P1=0xff;
while(1)
{
P1=0xff;
P1=0;
}
}
编译后运行,结果和汇编编写的一样了,
这说明,循环程序执行到最后一句话以后会重新跳回第一句话,这个jmp loop也占一条语句的时间,所以才有了以上的两种结果
上图是我又把程序变为
void main()
{
P1=0xff;
while(1)
{
P1=0xff;
P1=0;
P1=0xff;
P1=0;
P1=0xff;
P1=0;//。。。。。。。
//好多个p1=0,p1=0xff
}
}
这个时候,频率变成了333.3kHZ了,说明这已经是最快的速度了,但问题是,占空比还是33.3%,不解中。理论上来说,应该是50%的占空比才对,也许是芯片内部,下降保持的速度大于上升时保持的速度吧。
于是我又将程序改为
void main()
{
P1=0xff;
while(1)
{
P1=~P1;
P1=~P1;
P1=~P1;//。。。。。。。
}
}
这回又有变化了,以下是截图
这回效果已经非常不错了,达到250K,而且占空比在50%,但计算一下可得知,12M的12分频为1M,也就是说,他的io翻转速度应该在500Kh左右阿,也许是时钟的问题,不解中。
从以上效果图来看,还可以得出一个结论,就是好像取反要比改变管脚状态来得快。
这是LED与电阻中间的波形,还挺好看,但原因还不知道,先不分析,以后解决。
下面是STM32F103VE的管脚
这个是72M的可比那快多了
从上面的波形猜测,频率接近18Mhz,是不是因为管脚速度太快,由于管脚的分布电容电阻引起的波形变化。
已经快接近正弦波了。
经过验证:芯片的IO翻转速度低于芯片频率的一半,其原因可能是因为编译器翻译出的语句问题。
关键字:stm 单片机 io管脚 翻转实验
引用地址:
stm单片机io管脚翻转实验
推荐阅读最新更新时间:2024-03-16 14:03
死磕到底2—STM32F407驱动无FIFO无时钟ov7670
上次的F103驱动OV7670究竟没有实用价值,我又买了一块STM32F407开发小板, 驱动了无FIFO无时钟ov7670,320*240每秒28帧(应该还可以快点)。 感觉到这个方案比用有FIFO的划算,STM32F407开发小板+ov7670=60元左右。 一、407带摄像头接口,取摄像头数据由片内硬件操作,超爽。 二、我用示波器看PA8输出时钟,幅度很小,这不是程序问题,是示波器频率不够, 调试时候不要怀疑这个信号。我在这里白白纠结了几天。 三、摄像头相关的口线比较多,一根口线多处设置,还有硬件连接的问题,容易出错。 调式时候可以一步一步来,先调SCCB,把摄像头初始化搞OK,再调直接读取图像数据,这样
[单片机]
基于单片机的自动温度测量报警系统设计
摘要:目前,在自动控制领域用温度作为一种控制量对系统进行自动控制已经越来越普遍。针对这种实际情况本文设计了一种简单实用的温度报警系统。该系统以AT89C51单片机为中央处理单元,大大降低了系统开发的成本。通过温度传感器LM35采集外部的温度,并将温度转换成相应的电压值。A/D转换装置对电压值进行模数转换,将结果送入中央处理单元进行计算。单片机根据其处理的结果决定是否需要启动报警装置。结果表明,该系统可以在5~150℃环境下工作,当外界的温度达到设定的报警温度时该系统能够及时地做出反应,具有一定的现实价值。 关键词:AT89C51;传感器;A/D转换;自动报警 目前,无论是在工业生产中还是在科研实验中通过对温度测量来进行自动控制
[单片机]
在STM32F中使用UCOSII如何支持低功耗模式
在不在系统的裸奔的软件中,使用RTC+STOP模式很容易实现低功耗模式,但是在UCOS之类的操作系统,实现这一模式就有点麻烦,最大的问题是任务切换是无法控制的,经常出现唤醒之后程序跑飞的情况。 首先,要把休眠的代码段放在低优先级任务中,不一定是系统自带的空闲任务,也可以是用户自定义的最低优先级的任务。 其次,在休眠代码的前后加上两个指令: //=================================================================================== OSSchedLock();//禁止任务调度 while(1) { .....//休眠代码RTC+STOP PWR_Ent
[单片机]
STM32F407的硬件I2C
我使用的是STM32的固件库。 硬件模块使用之前必须配置其参数,I2C的配置如下: void IIC_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_InitStructure; RCC_ClocksTypeDef rcc_clocks; /* GPIO Peripheral clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE); RCC_A
[单片机]
51单片机定时器量程的硬件扩展方式
51单片机工作模式2自动装载定时值,按教科书的描述定时能力显得相对精准,但是此时的为8位定时器:当晶振为12MHz时,只能定时0.256ms。 升个级,精准性不要了,使定时器工作在模式1,16位定时器:当晶振为12MHz时已经能定时到65.56ms,略微牛逼不少。如果还要定时更长的数,可能会用软件方式 来扩展计数范围。软件方式扩展的大概思路是:在定时器中断服务程序中对定时器中断请求进行计数,当中断请求的次数达到要求的值时才进行相应的处理。例如,某事件的处理周期为1s,但由于受到最大定时时间的限制,无法一次完成定时,此时可以将定时器的定时时间设为以10ms为一个单位,启动定时器后的每一次定时器溢出中断产生10ms的定时,进入
[单片机]
基于USB总线的多路同步数据采集系统
1. 引言 通用串行总线(USB,Universal Serial Bus)是现代PC数据传输的发展趋势, PC的所有外设,包括键盘、鼠标、显示器、打印机、录音机、数字音响、电视机顶盒、数码相机、扫描仪、MODEM及各种多媒体音频、视频设备均可通过USB接口接入PC。USB总线同步数据采集系统即为这种总线接入系统。 2. 硬件方案 本系统采用MAXIAM公司的MAX125四路12位同步采集芯片,只需一个 启动信号即可实现同步采集、数据转换,完成后给出一个转换完成信号,可从端口依次读取A/D转换数据,送入单片机处理;USB接口芯片采用PHILIPS 公司的PDIUSBD12,此芯片单片集成SIE、FIFO存储器、收发器及电压变
[应用]
内嵌USB设备的ARM微控制器
爱特梅尔推出基于ARM9 的微控制器AT91SAM9R64,目标市场为高性能的、具有USB接口的嵌入式控制应用。AT91SAM9R64可通过USB、SD卡或外接NAND闪存启动,从而减少保存程序和批量数据的存储器的数量。芯片采用球间距为0.8mm的10x10 mm BGA封装。 高速USB 传输速率高达480 Mbits/sec的高速USB正迅速成为连接设备与PC的标准。SAM9R64可以将现有的全速USB (速率为12 Mbits/sec)产品升级到高速USB,而无需对连接器进行任何物理改动。 可编程的存储器总线电压 除了支持传统的静态存储器外,SAM9R64的存储器总线接口还支持SDRAM和NA
[新品]
单片机系统运行参数的保存及有效性判别
1 引 言 在单片机构成的控制系统中,系统控制时需要使用和保存已经设置或优化的参数。如果将运行参数仅仅存储于单片机的RAM区中,则系统在掉电或重启时将会丢失这些重要参数,不能正常运行。为了解决上述问题,保证控制系统正常、可靠地运行,需要将这些运行参数保存在足够容量的电可擦除存储器(EEPROM)中。在写入或读出EEPROM中的数据时,为保证数据操作的正确性,则需要进行数据校验。在系统运行这些参数之前,为检查运行参数的取值是否在许可范围之内,则需要进行参数取值范围的检验。本文结合作者开发的电梯轿厢门机控制系统,来详细讨论参数保存和校验的设计及实现。 2 系统运行参数的存储 在单片机组成的控制系统中,系统设置的运行参数是系统正常
[单片机]