历史上的今天
今天是:2025年03月03日(星期一)
2020年03月03日 | STM8自学笔记-002续 点亮LED
2020-03-03 来源:eefocus
点亮LED
点亮一个LED灯,应该是大多数单片机教程的第一步。这是最为基础的一步,也是最令人兴奋的一步,迈出这一小步就是迈入STM8大门的一大步。
通常,要对LED所在的单片机引脚(Pin)进行模式和电平设置,才能够点亮LED。先说C51和STM32上点亮LED的大致步骤,再来对比STM8上的步骤。
熟悉51单片机的童鞋应该很清楚,先用sbit映射一个Pin,然后让映射量置1来点亮该Pin连接的LED(拉电流驱动,与之相反的叫灌电流驱动)。也就是说,至少需要两行代码才能点亮LED。
sbit LED=P1^0;
LED=1; //将P1.0口赋值 1,对外输出高电平
在STM32库函数开发中,要先开启引脚Pin_x所在GPIOx的时钟,再对其初始化(选定输出引脚号、设置输出模式、设置引脚速度、应用设置),最后还要设置Pin电平。这样看来,要写6行。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
gpioInitStruct.GPIO_Pin = GPIO_Pin_10;
gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
gpioInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &gpioInitStruct);
GPIO_SetBits(GPIOB, GPIO_Pin_10);
在STM8中,只需要一行代码就能实现点亮LED。
GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_HIGH_SLOW);
//这句话调用的是stm8s_gpio.c中的GPIO初始化函数GPIO_Init()。
//“GPIOC,GPIO_PIN_3”代表选定了PC3
//“GPIO_MODE_OUT_PP_HIGH_SLOW”表示慢速的推挽输出,且输出高电平
上述代码既完成了初始化,又完成了电平设置。言简意赅。
补充
如果想要在点亮LED后 熄灭LED(即改变PC3的电平),有没有办法呢?
把HIGH改成LOW?!像下面这样?
GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_SLOW);
//“GPIOC,GPIO_PIN_3”代表选定了PC3
//“GPIO_MODE_OUT_PP_LOW_SLOW”表示慢速的推挽输出,且输出低电平
这样是可行的!但会把一部分宝贵的CPU时间又用在了初始化上!能不能像51或STM32那样仅操作输出电平?
ST官方早就准备了对应的库函数,而且一下子准备了3个。只要某个端口在前文进行过初始化,这三个函数就能够发挥作用。
GPIO_WriteHigh(GPIOC,GPIO_PIN_3); //置位,PC3=1
GPIO_WriteLow(GPIOC,GPIO_PIN_3); //复位,PC3=0
GPIO_WriteReverse(GPIOC,GPIO_PIN_3); //取反,PC3 ^=1
//这三个函数直接操作了GPIOx->ODR寄存器
上一篇:STVD下配置Cosmic编译器
史海拾趣
|
ARM培训视频-dsp-CPLD-FPGA开发视频-嵌入式系统开发-单片机开发视频 ARM培训视频-dsp-CPLD-FPGA开发视频-嵌入式系统开发-单片机开发视频 ------------------------------------------------------------------ 【ARM培训视频】课程主要内容 1.概念和基本工具: 嵌入式系统基本概念、嵌入式操作系统介绍 嵌入式系 ...… 查看全部问答> |
|
汽车伴我行——京郊另类玩家经典路线、汽车新科技、经典车型大罗列 汽车伴我行 1. 京郊另类玩家经典路线推荐 https://bbs.eeworld.com.cn/thread-2611-1-40.html 2. 智能车赛道记忆算法的研究 https://bbs.eeworld.com.cn/thread-9739-1-18.html 3. 汽车新科技 https://bbs.eeworld.com.cn/thread-7089-1-17.html ...… 查看全部问答> |
|
联华众科FPGA开发板 FA130 北京联华众科科技有限公司 http://www.lianhua-zhongke.com.cn Abstract 摘 要:联华众科FPGA开发板FA130核心器件为 Altera Cyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPC Bui ...… 查看全部问答> |
|
STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法! STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法! 描述:有两个按钮,分别设置阀值的+和-,一个LED用来显示当前设置值.… 查看全部问答> |
|
如何让wince5.0的IE支持flash呢?在adobe的网站上找到了用于ppc的flash插件,但不能用于wince, 听说,有人把ppc相应的dll考到了wince里,wince就可以用ppc的软件了,真的可能吗? 还有我的硬件是x86的,能否找到用于x86的ppc系统文件呢(dll), ...… 查看全部问答> |
|
各位高手大虾,我的开发板上有3个串口,串口1用来调试,串口2没有用,串口3接红外,由于我要加接GPS,又不想占用调试串口,就想把串口2打通, 在BSP中添加了相关代码后,在CE注册表下可以看到串口2,可是接上GPS线却什么反应的都没有,而串口1就可 ...… 查看全部问答> |
|
同步电路,post_sta和post_sim不同结果,谁碰到过? post_sta全通过,analysis_coverage分析基本都覆盖了,post_sim报setup违反,谁碰到过类似问题?用的是smic sc-m库 请各位高手支招!… 查看全部问答> |
|
求助!附程序!MSP430F169用I2C控制ADV7183写数据程序调试不成功!!急!! #include "io430.h" #include "In430.h" int tx_count; volatile unsigned char I2CBuffer[3]; void Init_Port(void) { P1DIR=0xFF; P2DIR=0XFF; P3DIR=0xFF; P4DIR=0xFF; P5DIR=0xFF; P6DIR=0xFF; P1SEL = 0; } void ...… 查看全部问答> |




