❶ 一个关于stm32触摸的问题
❷ 关于单片机的熔丝位
CK就是单片机的始终周期。
启动延时标示在单片机工作电压上升到限值之后再延迟一段时间才复位完成,保证单片机的复位操作可靠,避免程序飞跑。
❸ 单片机(dsPIC33CK)代码注释求解释
哈哈,不能直接看数字表面,它这种给都是寄存器赋值,你要真的理解这些操作什么意思,你要找到这个单片机的用户手册,找到这个寄存器的每一位代表什么意思,然后把这些16进制的数转换成2进制,对应每一位什么意思就懂了
❹ 关于两块单片机之间的串口通信,接收到的数据显示出来是错误的,不知道是发送错了,还是接收错了
http://blog.163.com/asm_c/blog/static/24820311320146138270129/
参考这个试试。
❺ 请教一个i2s的问题,我在使用STM32,型号为STM32F103VCT6,该型号单片机为大容量单片机。
就是MCK,提供时钟信号的,在ZET6上用过,貌似用的是pc6
❻ 请问下单片机中的SCLK和SDA和SCL各是什么意思,SDA和SCL我在I2C总线中见过,但是后来在时钟芯片又看到了
SDA 就相当于其中的双向IO传输数据的而SCLK就是时钟啦
❼ 单片机stm32中的PA0-CK_IN干什么用的
该引脚主要功能有PA0 和CK_IN功能,PA0是GPIO PortA 0引脚,CK_IN 是系统时钟输入,用户可以在引脚接有源晶振,提供时钟给系统使用!
❽ 单片机stm32中的PA0-CK_IN干什么用的
该引脚主要功能有PA0
和CK_IN功能,PA0是GPIO
PortA
0引脚,CK_IN
是系统时钟输入,用户可以在引脚接有源晶振,提供时钟给系统使用!
❾ 单片机红外遥控问题,要求:一个单片机发送数字另一个单片机也要能显示出相应的数字
呵呵,我刚前几天刚编好的程序,你的图片太小了,看不清楚
只要单片机原理图没用(你这个只是接受用的期间,没有发射的器件),你的红外芯片是什么型号的,要不怎么知道它的协议是什么~~~
它的时序还是有要求的,也就是红外芯片(也就是你要发射的红外线的芯片),它的型号不一样,那么它的协议就不一样,你先看看你红外发射芯片的型号,找到datasheet,然后就是找到协议,我这可以给你提供方法,把程序贴出来吧,你自己看看吧
#include"reg52.h"
#include"MacroAndConst.h"
#include"Foot.h"
#include"Delay.h"
#include"intrins.h"
ucharnum;
ucharkey_code=0; //遥控键值
ucharnew_code=0; //有无新按键
uinttemp_key_code=0; //键值暂存
ucharkey_bit_count=0; //键值码脉冲计数
uintcount=0; //定时中断次数计数
uinttemp_count=0; //定时中断计数暂存
ucharcommon_code_count=0; //前导码脉冲计数
ucharir_flag=0; //脉冲接收器所处的状态,0:无信号,1:系统码接收区,2:数据码接收区
//初始化
voidinter_init()
{
ir=1; //红外端口写1
TMOD=0X02; //定时器0,模式2,8位自动重装
TH0=(256-50)/256; //定时50us
TL0=TH0;
ET0=1; //允许定时器0中断
IT1=1; //INT1下降沿触发
ET1=1; //允许外部中断
EA=1; //开总中断
}
//定时器中断
voidtimer0() interrupt1
{
count++; //定时器中断次数累加
}
//外部中断,红外解码程序
voidint1() interrupt2
{
TR0=1;
if(count>12&&count<270) //如果信号合法,则放入buf_count,count清0,对下一个脉冲信号计时
{
temp_count=count;
count=0;
}
delay_10us(10); //延时100us来消除下降沿跳变抖动
if(ir==0) //INT1引脚稳定为低电平,则表明确实是信号,count重新计数,由于上面延时50us,因此要补偿一次T0中断
{
count=2;
}
if(temp_count>12&&temp_count<270) //若收到信号合法,则再次进行信号分析
{
if(ir_flag==0) //如果之前未收到起始码
{
if(temp_count>21&&temp_count<270) //判断是否起始码13.5
{
ir_flag=1; //系统标记
temp_count=0;
}
}
elseif(ir_flag==1) //收到起始码
{
if(common_code_count>=26) //若收到26个脉冲
{
ir_flag=2; //数据解码标志
common_code_count=0; //系统码计算清0
temp_count=0; //中断计数暂存清0
}
elseif((temp_count>40&&temp_count<70)||(temp_count>12&&temp_count<32))
{
temp_count=0;
common_code_count++; //每收到一个信号自加1
}
}
elseif(ir_flag==2) //进入数据编码接收
{
if(key_bit_count<8) //收到数据少于8位,则将收到的数据写入buf_key_code
{
if(temp_count>40&&temp_count<70)
{
temp_count=0;
temp_key_code>>=1;
temp_key_code|=0x80; //收到1
key_bit_count++; //数据脉冲累加
}
elseif(temp_count>12&&temp_count<32)
{
temp_count=0;
temp_key_code>>=1; //收到0
key_bit_count++;
}
}
else //若收到8位数据则做以下处理
{
ir_flag=0; //接收状态返回到空闲
key_code=temp_key_code;
key_bit_count=0;
temp_key_code=0;
temp_count=0;
TR0=0;
new_code=1;
}
}
}
}
好好看看吧,使用的定时计数器,挺简单的,重点在于协议,明白了协议就哦了
呵呵,记得给分啊~~
(*^__^*)嘻嘻……