网站建设教程小说简介,石家庄企业logo设计,网站开发实训目的,网络营销必看的几本书硬件知识LED原理图
如何点亮一个LED灯#xff1f;
看原理图#xff0c;确定控制LED的引脚。看主芯片的芯片手册#xff0c;确定如何设置控制这个引脚。写程序。
LED有插脚封装的、贴片封装的。 它们长得完全不一样#xff0c;因此我们在原理图中把它们抽象出来。
点亮…硬件知识LED原理图
如何点亮一个LED灯
看原理图确定控制LED的引脚。看主芯片的芯片手册确定如何设置控制这个引脚。写程序。
LED有插脚封装的、贴片封装的。 它们长得完全不一样因此我们在原理图中把它们抽象出来。
点亮LED需要通电源同时为了保护LED需要加个电阻减小电流。 控制LED灯的亮灭可以手动开关LED但在电子系统中不可能让人来控制开关通过编程利用芯片的引脚去控制开关。 LED的驱动方式常见的有4种。
使用引脚输出3.3V点亮LED输出0V熄灭LED。使用引脚拉低到0V点亮LED输出3.3V熄灭LED。
有的芯片为了省电等原因其引脚驱动能力不足这时可以使用三极管驱动。
使用引脚输出1.2V点亮LED输出0V熄灭LED。使用引脚输出0V点亮LED输出1.2V熄灭LED。 由此主芯片引脚输出高电平/低电平即可改变LED状态而无需关注GPIO引脚输出的是3.3V还是1.2V。 所以简称输出1或0 逻辑1–高电平 逻辑0–低电平
GPIO引脚操作方法
GPIOGeneral-purpose input/output通用输入/输出口。
GPIO模块一般结构
有多组GPIO每组有多个GPIO使能电源/时钟模式Mode引脚可用于GPIO或其它功能方向引脚Mode设置为GPIO时要继续设置它是输出引脚还是输入引脚数值对于输出引脚可以设置寄存器让它输出高、低电平。 对于输入引脚可以读取寄存器得到引脚的当前电平。
GPIO寄存器操作
芯片手册一般有相关章节用来介绍power/clock。可以设置对应寄存器使能某个GPIO模块。有些芯片的GPIO是没有使能开头的即它总是使能的。一个引脚可以用于GPIO、串口或其它功能有对应的寄存器来选择引脚的功能。对于已经设置为GPIO功能的引脚有方向寄存器用来设置它的方向输入、输出。对于已经设置为GPIO功能的引脚有数据寄存器用来写、读引脚电平状态。
操作寄存器不能影响到其它位
GPIO寄存器的2种操作方法
直接读写读出、修改对应位、写入。
//将bit n置为1
val data_reg;
val val | (1 n);
data_reg val;//清除bit n
val data_reg;
val ~(1n);
data_reg val;set-and-clear protocolset_reg、clr_reg、data_reg三个寄存器对应的是同一个物理寄存器。
set_reg (1 n);
clr_reg (1 n);STM32F103的LED操作方法
打开原理图搜索LED。 以PB0为例它属于GPIOB里的第0个引脚。 怎么使能GPIOB?
将Bit 3设置为1。 频率越高传输数据越快波形也越陡峭同时对外界设备的影响也越大。 编程
访问寄存器用指针
int a;
unsigned int*p a; //p等于a的地址*p val; //写这个地址就是写a
val *p; //读这个地址就是读aunsigned int *p 0x40010800; //p等于某个寄存器的地址
*p val; //写这个地址就是写这个寄存器
val *p; //读寄存器void delay(int d)
{while(d--);
}
int main()
{unsigned int *pReg;/* 使能GPIOB */pReg (unsigned int *)(0x40021000 0x18);*pReg | (13);/* 设置GPIOB0为输出引脚 */pReg (unsigned int *)(0x40010C00 0x00);*pReg | (10);pReg (unsigned int *)(0x40010C00 0x0C);while(1){/* 设置GPIOB0输出高电平 */*pReg | (10);delay(100000);/* 设置GPIOB0输出低电平 */*pReg ~(10);delay(100000);}return 0;
}再由启动文件start.S调用main函数参考keil自带的tartup_stm32f10x_hd.s
设置栈调用main函数 PRESERVE8THUMBAREA RESET, DATA, READONLYEXPORT __Vectors __Vectors DCD 0 ; Top of StackDCD Reset_Handler ; Reset HandlerAREA |.text|, CODE, READONLY; Reset handler
Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT mainLDR SP, (0X200000000XC000)BL mainENDPEND