STM32使用循环进行粗略延时的代码实现

STM32使用循环进行粗略延时的代码实现

在使用STM32系列单片机进行开发过程中,在不使用定时器进行精准延时的情况下,我们可以使用循环来构造自己的延时函数。
对于STM32F103系列,它的系统时钟为72MHz。可以使用以下函数进行微秒级和毫秒级延时:
//微秒级延时函数
void delay_us(u32 us)
{
    u8 i = 0;
    while(us--)
    {
        i = 12;
        while(i--);
    }
}
​
//毫秒级延时函数
void delay_ms(u32 ms)
{
    u16 i = 0;
    while(ms--)
    {
        i = 14500;
        while(i--);
    }
}
对于STM32F407系列,它的系统时钟为168MHz。可以使用以下函数进行微秒级和毫秒级延时:
//微秒级延时函数
void delay_us(u32 us)
{
    u8 i = 0;
    while(us--)
    {
        i = 42;
        while(i--);
    }
}
​
//毫秒级延时函数
void delay_ms(u32 ms)
{
    u16 i = 0;
    while(ms--)
    {
        i = 41750;
        while(i--);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
STM32是一款广泛应用于嵌入式系统中的32位微控制器系列。要使用RS485通信协议实现STM32的通信功能,需要以下步骤: 1. 配置硬件:首先,需要将STM32的GPIO引脚配置为UART模式,并选择正确的引脚用于RS485收发功能。这些引脚的具体使用方式可以通过查阅STM32的参考手册来获知。 2. 初始化UART:在代码中,需要初始化UART模块,设置波特率、数据位、停止位等参数。可以使用STM32提供的库函数或者使用寄存器级编程进行初始化。 3. RS485配置:RS485通信需要设置转换芯片的发送使能和接收使能控制引脚。在代码中,需要配置GPIO引脚,控制RS485芯片的使能状态,确保在发送或接收数据时能正确切换芯片的工作模式。可以使用GPIO库函数或寄存器级编程进行配置。 4. 数据收发:使用UART的库函数或寄存器级编程进行数据的发送和接收,可以根据通信协议进行相应的数据处理、校验等操作。在RS485通信中,还需要注意设置正确的发送延时和接收超时时间,以确保数据的稳定性。 5. 错误处理:在通信过程中,可能会出现数据传输错误、接收超时等异常情况。为了处理这些异常,需要添加相应的错误处理代码,例如重新发送数据或重新初始化UART模块等。 综上所述,通过配置硬件、初始化UART模块、设置RS485芯片使能状态、进行数据收发以及错误处理等步骤,就可以实现STM32使用RS485通信的功能。具体的代码实现可以根据具体的应用需求和通信协议进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牧以南歌〆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值