STM8S精确延时+LED闪烁

初学者,写的一个LED闪烁程序,延时一秒,用示波器看过!
#include"iostm8s105c4.h"
#define LED PC_ODR_ODR1
void GPIO_Init()
{
  PG_DDR_DDR0=1;
  
  PG_CR1_C10=1;
  
  PG_CR2_C20=0;
  
  PG_ODR_ODR0=0;
  
  PC_DDR_DDR1=1;
  
  PC_CR1_C11=1;
  
  PC_CR2_C21=0;
  
}
/********** 微秒级延时程序*********/ 

void Delayus(void) 
{  
  asm("nop"); 
  
  asm("nop"); 
  
  asm("nop"); 
 
  asm("nop");  
}
/********** 毫秒级延时程序**********/ 

void Delayms(unsigned int time) 

{ 
    
  unsigned int i; 
    
  while(time--)   
    
	for(i=900;i>0;i--) 
    
	  Delayus();  
  
} 

main()
{
  GPIO_Init();
  
  while(1)
  {
	LED=~LED;
	
	Delayms(125);
  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM8S103F3P6是一款低功耗、高性能的8位微控制器,它具有丰富的外设和强大的处理能力。SPI(Serial Peripheral Interface)是一种串行外设接口协议,常用于连接微控制器与外部设备进行通信。 下面是一个简单的示例代码,演示了如何在STM8S103F3P6上使用SPI协议进行通信的C语言代码: ```c #include <stm8s.h> // 定义SPI相关的引脚 #define SPI_PORT GPIOB #define SPI_SCK_PIN GPIO_PIN_5 #define SPI_MISO_PIN GPIO_PIN_6 #define SPI_MOSI_PIN GPIO_PIN_7 #define SPI_CS_PIN GPIO_PIN_4 // 初始化SPI void SPI_Init(void) { // 配置引脚为推挽输出模式 GPIO_Init(SPI_PORT, SPI_SCK_PIN | SPI_MOSI_PIN | SPI_CS_PIN, GPIO_MODE_OUT_PP_LOW_FAST); // 配置引脚为浮空输入模式 GPIO_Init(SPI_PORT, SPI_MISO_PIN, GPIO_MODE_IN_FL_NO_IT); // 配置SPI控制寄存器 SPI->CR1 = SPI_CR1_MSTR | SPI_CR1_SPE; // 主模式使能 SPI->CR2 = SPI_CR2_SSI | SPI_CR2_SSM; // 软件片选使能 } // 发送一个字节数据 void SPI_SendByte(uint8_t data) { while (!(SPI->SR & SPI_SR_TXE)); // 等待发送缓冲区为空 SPI->DR = data; // 写入数据到发送缓冲区 while (!(SPI->SR & SPI_SR_RXNE)); // 等待接收缓冲区非空 uint8_t dummy = SPI->DR; // 读取接收缓冲区的数据(清除RXNE标志) } // 接收一个字节数据 uint8_t SPI_ReceiveByte(void) { SPI_SendByte(0xFF); // 发送一个空字节,触发SPI通信 return SPI->DR; // 返回接收到的数据 } int main(void) { SPI_Init(); // 初始化SPI while (1) { // 发送和接收数据的代码 // ... } } ``` 请注意,以上代码只是一个简单的示例,实际应用中可能需要根据具体的外设和通信需求进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽墨志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值