写一个微妙级计时IO口输出高电平的时间的代码
时间: 2023-12-14 20:39:44 浏览: 109
以下是一个使用STM32F4 Discovery开发板的微妙级计时IO口输出高电平的代码示例:
```c
#include "stm32f4xx.h"
void init_timer(void);
void init_gpio(void);
int main(void)
{
init_gpio(); // 初始化GPIO
init_timer(); // 初始化定时器
while (1)
{
GPIO_SetBits(GPIOD, GPIO_Pin_12); // 将PD12置高
delay_us(10); // 延迟10微秒
GPIO_ResetBits(GPIOD, GPIO_Pin_12); // 将PD12置低
delay_ms(1000); // 延迟1秒
}
}
void init_timer(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 时钟初始化
TIM_TimeBaseInitTypeDef TIM_InitStruct;
TIM_InitStruct.TIM_Prescaler = 84 - 1; // 分频系数为84
TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 计数器向上计数
TIM_InitStruct.TIM_Period = 0xFFFF; // 定时器周期为65535
TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割为1
TIM_TimeBaseInit(TIM2, &TIM_InitStruct); // 初始化定时器
TIM_Cmd(TIM2, ENABLE); // 启动定时器
}
void init_gpio(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // 时钟初始化
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12; // PD12
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; // 输出模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 推挽输出
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // 没有上下拉
GPIO_Init(GPIOD, &GPIO_InitStruct); // 初始化GPIO
}
void delay_us(uint32_t n)
{
TIM2->CNT = 0; // 计时器清零
while (TIM2->CNT < n); // 等待计时器计数到n
}
void delay_ms(uint32_t n)
{
while (n--)
{
delay_us(1000);
}
}
```
该代码使用TIM2作为计时器,PD12作为输出IO口。在主函数中,先初始化GPIO和计时器,然后使用while循环不断输出10微秒的高电平并延迟1秒。
delay_us和delay_ms函数分别用于微妙级和毫秒级的延迟。其中,delay_us函数使用TIM2来计时,等待计时器计数到n,即等待n微秒。delay_ms函数则调用delay_us函数,循环等待n次,即等待n毫秒。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![.zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![.zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)