延时函数学习完之后,可以学习PY32F003F18的GPIO输出功能。
1、Debug引脚默认被置于复用功能上拉或下拉模式:
PA14默认为SWCLK: 置于下拉模式
PA13默认为SWDIO: 置于上拉模式
PF4默认为Boot:Boot引脚默认置于输入下拉模式
2、GPIO输出状态:
1)、push-pull,推挽输出
2)、open drain,开漏极输出
3)、上拉/下拉
#define GPIO_NOPULL (0x00000000u) //引脚上拉和下拉都没有被激活
#define GPIO_PULLUP (0x00000001u) //引脚上拉被激活,Pull-up activation
#define GPIO_PULLDOWN (0x00000002u) //引脚下拉被激活,Pull-down activation
3、测试程序
#include "LED.h"
void MCU_LED_Init(void);
//函数功能:MCU_LED灯引脚初始化,并配置为关灯
void MCU_LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOB_CLK_ENABLE();//使能GPIOB时钟
//初始化GPIOB5
GPIO_InitStructure.Pin = GPIO_PIN_5; //选择第5脚
GPIO_InitStructure.Pull = GPIO_PULLUP; //引脚上拉被激活
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; //配置GPIO速度为极高
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; //设置引脚工作模式为推挽输出方式
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
//根据GPIO_InitStructure结构变量指定的参数初始化GPIOB的外设寄存器
MCU_LED_Off();
}
#ifndef __LED_H
#define __LED_H
#include "py32f0xx_hal.h"
#define MCU_LED_On() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5, GPIO_PIN_SET) //输出高电平开灯
#define MCU_LED_Off() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5, GPIO_PIN_RESET) //输出高电平关灯
#define MCU_LED_Toggle() HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5) //输出电平翻转
extern void MCU_LED_Init(void);
#endif /* __LED_H */
#include "py32f0xx_hal.h"
#include "LED.h"
void服务器托管网 Delay_ms(uint32_t x_ms);
int main(void)
{
// HSE_Config();
//初始化"HSI,HSE,LSI振荡器",HSE用作系统时钟(SYSCLK),同时配置"AHB时钟(HCLK)和APB时钟(PCLK)"
uwTickFreq=HAL_TICK_FREQ_1KHZ;//准备配置"SysTick定时器"每1ms中断一次
HAL_InitTick(PRIORITY_LOWEST);//配置"SysTick定时器"每1ms中断一次,优先级为最低
// HAL_Init();//配置"SysTick定时器"每1ms中断一次,优先级为最低
MCU_LED_Init();//MCU_LED灯引脚初始化,并配置为关灯
HAL_Delay(1000);
while (1)
{
MCU_LED_Toggle();
Delay_ms(500);
}
}
//函数功能:延时x_ms毫秒
void Delay_ms(uint32_t x_ms)
{
uint8_t flag;
uint服务器托管网32_t tickstart;
uint32_t tickend;
uint32_t tmp;
tickstart = HAL_GetTick();
//读取"SysTick计数器"的中断次数计数器uwTick
flag=1;
if (x_ms==0) flag=0;
while (flag)
{
tickend=HAL_GetTick();
//读取"SysTick计数器"的中断次数计数器uwTick
if(tickend>=tickstart) tickend=tickend - tickstart;
else
{
tmp=0xFFFFFFFF;
tmp=tmp-tickstart;
tickend=tickend+tmp;
// tickend=tickend+0xFFFFFFFF-tickstart;
}
if ( tickend > x_ms) flag=0;//超时
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: PlayWright(十三) – PyTest基本使用
我们都知道,在做单元测试框架中有UnitTest和Pytest,前者是Python中自带无需安装,Pytest需要安装,今天我们来讲的就是Pytest,当然如果是做自动化,建议两个都要掌握一下,可以针对实际业务灵活使用 废话不多说,开干! 1、环境安装 p…