历史上的今天
今天是:2024年09月14日(星期六)
2021年09月14日 | STM8 点亮第一个发光二极管
2021-09-14 来源:eefocus
当 I/O 输出低电平时,LED 导通,LED被点亮;当 I/O 输出高点平时,LED 截止,LED 熄灭;当 I/O 周期性的交替输出高电平、低电平,LED就会闪烁
void InitLED(void)
{
PC_DDR|=0x08;//设置 PC3 为输出模式
PC_CR1|=0x08;//设置 PC3 为推挽输出
PC_CR2|=0x00;//设置 PC3 为 10MHz 快速输出
PE_DDR|=0x01;//设置 PE0 为输出模式
PE_CR1|=0x01;//设置 PE0 为推挽输出
PE_CR2|=0x00;//设置 PE0 为 10MHz 快速输出
PD_DDR|=0x08;//设置 PD3 为输出模式
PD_CR1|=0x08;//设置 PD3 为推挽输出
PD_CR2|=0x00;//设置 PD3 为 10MHz 快速输出
}
void main( void )
{
InitLED(); //初始化 LED 端口
while(1)
{
PC_ODR&=0xF7;//PC_ODR 第 3 位清零,输出低电平
PE_ODR&=0xFE; //PE_ODR 第 0 位清零,输出低电平
PD_ODR&=0xF7; //PD_ODR 第 3 位清零,输出低电平
Delay(5000); //延时
PC_ODR|=0x08;//PC_ODR 第 3 位置位,输出高电平
PE_ODR|=0x01; //PE_ODR 第 0 位置位,输出高电平
PD_ODR|=0x08; //PD_ODR 第 3 位置位,输出高电平
Delay(5000); //延时
}
}
在代码中出现的|=是在嵌入式 C 语言开发中比较常用的位操作方式,PC_DDR|=0x08;这句代码用来将PC_DDR寄存器的[3]位置位,而不影响寄存器的其他位。这句代码实质上是将 PC_DDR寄存器的值与0x08进行或操作,然后再赋值给 PC_DDR 寄存器。
在程序中出现的&=也是嵌入式 C 语言中比较常用的位操作方式,它用来将某位清零,而不影响寄存器的其他位。它实质上是将寄存器的值与等号后面的值进行与操作,然后再赋值给寄存器。
位操作
#include "iostm8s208mb.h"//主控芯片的头文件
/************************常用数据类型定义*************************/
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
/*************************端口/引脚定义区域***********************/
#define LED PI_ODR_ODR0//连接至LED引脚PI0
/**************************函数声明区域***************************/
/**************************主函数区域*****************************/
void main(void)
{
PI_DDR_DDR0=1; //配置PI0端口为输出模式
PI_CR1_C10=1; //配置PI0端口为推挽输出模式
PI_CR2_C20=0; //配置PI0端口低斜率输出2MHz
LED=0; //让PI0引脚输出低电平
}
上一篇:搭建STM8S001开发环境
史海拾趣
|
年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的结合以 ...… 查看全部问答> |
|
转自:http://www.1000bbs.com/dispbbs.asp?boardid=51&Id=261604 首先声明一下身份:辽宁锦州安防器材经销商、工程商。 我开始选择红外一体机,是因为甲方点着名要这玩意。 选了哪些厂家的哪些型号的红外机,恕我不一一列举了。总之,深圳的、 ...… 查看全部问答> |
|
各位大虾,我采用了sim300d gprs模块,北京的神州行wap gprs 卡,通过ppp协议来连接cmwap,现在通过了pap验证,可以拿到ISP server的ip address和分配的本地ip address。有几个问题: 1,如何自动获取dns。如果在ipcp请求中请求分配dn ...… 查看全部问答> |
|
例如 taskA 在moduleA中定义, 而moduleB与moduleA有可能是嵌套关系,也可能是并列的被高层模块调用,那么moduleB能调用taskA么?… 查看全部问答> |
|
我是新手 刚开始做 windows CE 的程序。再部署的时候报了个 这样的错误 。。请教各位 errmessage : 指定的文件不是有效的 CE 引导映像 。。。 内部签名丢失 或者 节长度或校验和 不正确。。。 请教各位 这是怎么回事& ...… 查看全部问答> |
|
大家好,我在编译一个代码出现了栈溢出警告, 理论上讲我的数据段为: map文件 6 152 bytes of CODE memory 1 268 bytes of DATA memory (+ 56 absolute ) 463 bytes of CONST memory 而栈的使用情况 ...… 查看全部问答> |
|
/*实验板 MSP430 LaunchPad * 利用定时器编写PWM电路,驱动LED,并可以通过按键调节亮度 * MCLK=SMCLK=DCOCLK=32×ACLK=1.048576MHz, */ #include void main(void) { P1DIR |= BIT6+BIT0; P1DIR &=~BIT3; &nb ...… 查看全部问答> |




