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/

最新文章

  1. java入门笔记001--java环境搭建
  2. {Reship}{Code}{CV}
  3. mongodb 3.2 用户权限管理配置
  4. Win10/UWP新特性系列—Launcher实现应用间的通信
  5. 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
  6. 基于新浪sae使用php生成图片发布图文微博
  7. Struts2 自定义拦截器实例—登陆权限验证
  8. 警惕Dictionary和SortedDictionary的顺序陷阱
  9. JS字符串转换为JSON的四种方法笔记
  10. 使用.net core在Ubuntu构建一个TCP服务器
  11. (摘)老司机也必须掌握的MySQL优化指南
  12. 通过Visualizing Representations来理解Deep Learning、Neural network、以及输入样本自身的高维空间结构
  13. 【Scheme】Huffman树
  14. UI设计课程教程分享:Banner的设计和技巧
  15. 文件的编辑命令-echo/cat
  16. Xcode使用介绍
  17. Microsoft SQL Server on Linux破解 2G内存限制
  18. curl工具
  19. SQL基本点—— 思维导图
  20. maven junit.framework不存在问题解决

热门文章

  1. CSS盒模型属性详细介绍
  2. 【Java】 Variable 变量
  3. L6循环神经网络
  4. stand up meeting 12/4/2015 -12/6/2015
  5. 虚拟机体验NAS私人云全揭秘:序言——虚拟机体验NAS私人云缘由
  6. 文字检测模型EAST应用详解 ckpt pb的tf加载,opencv加载
  7. 基于nodejs的游戏服务器
  8. C# WCF的通信模式
  9. How to skip all the wizard pages and go directly to the installation process?
  10. StringBuilder、StringBuffer分析比较