第一个程序(STM32F103点灯)
2023-12-17 22:52:47
点亮LED
- 看原理图确定控制LED的引脚
- 看主芯片手册确定如何设置/控制引脚
- 写程序
LED有很多种,像插脚的,贴片的。
它们长得完全不一样,因此我们在原理图中将它抽象出来。
嵌入式系统中,一个LED的电阻非常低,I = U/R,因此I非常大,会将LED烧坏,所以需要串联一个电阻。
点亮LED需要通电源,同时为了保护LED,加个电阻减小电流。
控制LED灯的亮灭,可以手动开关LED,但在电子系统中,不可能让人来控制开关,通过编程,利用芯片的引脚去控制开关。
LED的驱动方式,常见的有四种。
方式1:使用引脚输出3.3V点亮LED,输出0V熄灭LED。
方式2:使用引脚拉低到0V点亮LED,输出3.3V熄灭LED。
有的芯片为了省电等原因,其引脚驱动能力不足,这时可以使用三极管驱动。
方式3:使用引脚输出1.2V点亮LED,输出0V熄灭LED。
方式4:使用引脚输出0V点亮LED,输出1.2V熄灭LED。
由此,主芯片引脚输出高电平/低电平,即可改变LED状态,而无需关注GPIO引脚输出的是3.3V还是1.2V。
所以简称输出1或0:
逻辑1–>高电平
逻辑0–>低电平
电路基础
当左边电压大于右边电压时,电流就会通过。
当P级电压大于N级电压时,三极管就会导通。
GPIO引脚操作方法
GPIO:General-purpose input/output,通用输入/输出口。
GPIO模块一般结构:
- 有多组GPIO,每组有多个GPIO。
- 使能:电源/时钟
- 模式(Mode):引脚可用于GPIO或其它功能
- 方向:引脚Mode设置为GPIO时,可以继续设置它是输出引脚,还是输入引脚。
- 数值:对于输出引脚,可以设置寄存器让它输出高、低电平。对于输入引脚,可以读取寄存器得到引脚的当前电平。
GPIO寄存器的2种操作方法
不能影响到其他位
直接读写:读出、修改对应位、写入
// 要设置bit n
val = data_reg;
val |= (1 << n);
data_reg = val;
// 要清除bit n
val = data_reg;
val &= ~(1<<n);
data_reg = val;
set-and-clear protocol:
set_reg,clr_reg,data_reg三个寄存器对应的是同一个物理寄存器
要设置bit n:set_reg = (1<<n);
要清除bit n:clr_reg = (1<<n);
复位和时钟控制RCC
怎么访问寄存器
unsigned int *p=0x40010800;
*p = val;
val = *p;
文章来源:https://blog.csdn.net/Caramel_biscuit/article/details/135041461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!