HC32F003C4PA GPIO Output
2024-10-09 01:59:55
1、打开启动文件,找到并跳转至SystemInit函数
void SystemInit(void)
{
stc_clk_systickcfg_t stcCfg; // TODO load trim from flash
//hcr 4MHz manual trim.
Clk_SetRCHFreq(ClkFreq4Mhz);//默认内部RCH 4M
Clk_Enable(ClkRCH, TRUE); SystemCoreClockUpdate(); DDL_ZERO_STRUCT(stcCfg);
stcCfg.bNoRef = TRUE;
stcCfg.u32LoadVal = 0xFFFFFF;
Clk_SysTickConfig(&stcCfg);
}
系统默认使用内部RCH 4MHz时钟源,关于时钟部分介绍,请查阅《HC32F003系列_HC32F005系列用户手册》
2、接着我们进入main函数
int32_t main(void)
{ //GPIO输出
//初始化外部GPIO P03为输出、上拉、开漏,P03端口外接LED3
Gpio_InitIOExt(, , GpioDirOut, TRUE, FALSE, TRUE, FALSE);
Gpio_InitIOExt(, , GpioDirOut, TRUE, FALSE, TRUE, FALSE); while ()
{
//输出高电平,LED3灭
Gpio_SetIO(, , TRUE);
//delay1ms(1000); //输出低电平,LED3亮
Gpio_SetIO(, , FALSE);
//delay1ms(1000);
}
}
main函数中,GPIO外设的初始化函数Gpio_InitIOExt,关于参数配置请查看注释
/**
*******************************************************************************
** \brief 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 = 低
** \retval 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 clock
M0P_CLOCK->PERI_CLKEN_f.GPIO = ;
//force set mode, ignore result.
Gpio_SetAnalog(u8Port, u8Pin, FALSE); //fn
*((volatile uint32_t *)((uint32_t)&M0P_GPIO->P01_SEL + u8Port * GPIO_GPSZ - + u8Pin * )) = ;
//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实现
/**
*******************************************************************************
** \brief GPIO IO输出值设定
**
** \param [in] u8Port IO Port口
** \param [in] u8Pin IO Pin脚
** \param [in] bVal 输出电平高低
**
** \retval 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/
最新文章
- java入门笔记001--java环境搭建
- {Reship}{Code}{CV}
- mongodb 3.2 用户权限管理配置
- Win10/UWP新特性系列—Launcher实现应用间的通信
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
- 基于新浪sae使用php生成图片发布图文微博
- Struts2 自定义拦截器实例—登陆权限验证
- 警惕Dictionary和SortedDictionary的顺序陷阱
- JS字符串转换为JSON的四种方法笔记
- 使用.net core在Ubuntu构建一个TCP服务器
- (摘)老司机也必须掌握的MySQL优化指南
- 通过Visualizing Representations来理解Deep Learning、Neural network、以及输入样本自身的高维空间结构
- 【Scheme】Huffman树
- UI设计课程教程分享:Banner的设计和技巧
- 文件的编辑命令-echo/cat
- Xcode使用介绍
- Microsoft SQL Server on Linux破解 2G内存限制
- curl工具
- SQL基本点—— 思维导图
- maven junit.framework不存在问题解决
热门文章
- CSS盒模型属性详细介绍
- 【Java】 Variable 变量
- L6循环神经网络
- stand up meeting 12/4/2015 -12/6/2015
- 虚拟机体验NAS私人云全揭秘:序言——虚拟机体验NAS私人云缘由
- 文字检测模型EAST应用详解 ckpt pb的tf加载,opencv加载
- 基于nodejs的游戏服务器
- C# WCF的通信模式
- How to skip all the wizard pages and go directly to the installation process?
- StringBuilder、StringBuffer分析比较