HC32F003C4PAGPIOOutput
1、打开启动文件,找到并跳转至SystemInit函数
1void SystemInit(void) 2{ 3 stc_clk_systickcfg_t stcCfg; 45// TODO load trim from flash
6//hcr 4MHz manual trim.
7 Clk_SetRCHFreq(ClkFreq4Mhz);//默认内部RCH 4M
8 Clk_Enable(ClkRCH, TRUE);
9
10 SystemCoreClockUpdate();
11
12 DDL_ZERO_STRUCT(stcCfg);
13 stcCfg.bNoRef = TRUE;
14 stcCfg.u32LoadVal = 0xFFFFFF;
15 Clk_SysTickConfig(&stcCfg);
16 }
系统默认使用内部RCH 4MHz时钟源,关于时钟部分介绍,请查阅《HC32F003系列_HC32F005系列用户手册》
2、接着我们进入main函数
int32_t main(void){
//GPIO输出//初始化外部GPIO P03为输出、上拉、开漏,P03端口外接LED3Gpio_InitIOExt(3, 5, GpioDirOut, TRUE, FALSE, TRUE, FALSE);
Gpio_InitIOExt(3, 6, GpioDirOut, TRUE, FALSE, TRUE, FALSE);
while (1)
{
//输出高电平,LED3灭
Gpio_SetIO(3, 5, TRUE);
//delay1ms(1000);
//输出低电平,LED3亮
Gpio_SetIO(3, 6, FALSE);
//delay1ms(1000);
}
}
main函数中,GPIO外设的初始化函数Gpio_InitIOExt,关于参数配置请查看注释
/*********************************************************************************
** rief GPIO 初始化2
**
** param [in] u8Port IO Port口
** param [in] u8Pin IO Pin脚
** param [in] enDir IO 方向(输入或输出)
** param [in] bPullup 上拉开关
** param [in] bPulldown 下拉开关
** param [in] bOdr 开漏开关
** param [in] bDrive 驱动能力
** 0 = 高
** 1 = 低
** etval Ok 设置成功
** 其他值 设置失败
*****************************************************************************
*/en_result_t Gpio_InitIOExt(uint8_t u8Port, uint8_t u8Pin,
en_gpio_dir_t enDir,
boolean_t bPullup,
boolean_t bPulldown,
boolean_t bOdr,
boolean_t bDrive)
{
//force open clockM0P_CLOCK->PERI_CLKEN_f.GPIO = 1;
//force set mode, ignore result.
Gpio_SetAnalog(u8Port, u8Pin, FALSE);
//fn
*((volatile uint32_t *)((uint32_t)&M0P_GPIO->P01_SEL + u8Port * GPIO_GPSZ - 4 + u8Pin * 4)) = 0;
//ADS
//setBit((uint32_t)&M0P_GPIO->ADS0 + u8Port * GPIO_GPSZ, u8Pin, 0);
//dir
setBit((uint32_t)&M0P_GPIO->P0DIR + u8Port * GPIO_GPSZ, u8Pin, enDir);
//dr
setBit((uint32_t)&M0P_GPIO->P0DR + u8Port * GPIO_GPSZ, u8Pin, bDrive);
setBit((uint32_t)&M0P_GPIO->P0PU + u8Port * GPIO_GPSZ, u8Pin, bPullup);
setBit((uint32_t)&M0P_GPIO->P0PD + u8Port * GPIO_GPSZ, u8Pin, bPulldown);
setBit((uint32_t)&M0P_GPIO->P0OD + u8Port * GPIO_GPSZ, u8Pin, bOdr);
return Ok;
}
最后是GPIO输出高低电平,通过Gpio_SetIO实现
/*********************************************************************************
** rief GPIO IO输出值设定
**
** param [in] u8Port IO Port口
** param [in] u8Pin IO Pin脚
** param [in] bVal 输出电平高低
**
** etval Ok 设置成功
** 其他值 设置失败
*****************************************************************************
*/void Gpio_SetIO(uint8_t u8Port, uint8_t u8Pin, boolean_t bVal)
{
bVal = !!bVal;
setBit((uint32_t)&M0P_GPIO->P0OUT + u8Port * GPIO_GPSZ, u8Pin, bVal);
}
2020-05-08
注意:华大MCU资料下载链接 ftp://HdscCustomer:HdscGuest2019!@ftp.hdsc.com.cn/
以上是 HC32F003C4PAGPIOOutput 的全部内容, 来源链接: utcz.com/z/516296.html