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/

HC32F003C4PA GPIO Output的更多相关文章

  1. Beaglebone Black– 智能家居控制系统 LAS - 刷 WiFi 模块 ESP8266 Firmware 和 ESP8266 直接收发 GPIO 信号

    用 Windows 来刷 ESP8266 固件有很多中文教程,来试试直接用 BBB 刷吧.目标是 NodeMCU,ESP-01 可用,就是我买的那个. 接线方式在上一篇.当 echo ‘BB-UART ...

  2. RPi 2B GPIO 测试

    /************************************************************************************** * RPi 2B GPI ...

  3. 树莓派高级GPIO库,wiringpi2 for python使用笔记(三)GPIO操作

    GPIO库的核心功能,当然就是操作GPIO了,GPIO就是"通用输入/输出"接口,比如点亮一个LED.继电器等,或者通过iic spi 1-wire等协议,读取.写入数据,这都是G ...

  4. 树莓派控制GPIO(Python)

    如果你的raspi没有安装python那么先   sudo apt-get update sudo apt-get install python-dev   例如想要控制35管脚的亮灭: 先建一个文本 ...

  5. 二,ESP8266 GPIO和SPI和定时器和串口

    让这个灯亮 我们写lua用这个软件 链接:http://pan.baidu.com/s/1kVN09cr 密码:pfv7 http://www.cnblogs.com/yangfengwu/p/624 ...

  6. 树莓派.使用Node.js控制GPIO

    树莓派上的40个GPIO是最好玩的东西 它们可以被C,/C++, Python, Java等语言直接控制 现在就来看看怎么用Node.js做到同样的事情 在试验之前, 请先安装好Node.js, 具体 ...

  7. MTK GPIO 一些理解

    基于6575平台: GPIO驱动程序提供了两个接口: (1)内核空间:所提供的GPIO驱动程序,驱动程序可以调用其他函数 (2)用户空间:用户空间的程序可以通过发送IOCTL   /dev/ mtgp ...

  8. STM32L1X系列GPIO运用

    STM32L15x 系列中基本步骤是和STM32F10x相同的 一 配置GPIO 初始化GPIO时我们需要催一下内容进行配置(以下步骤没有必然顺序) 1 创建GPIO结构 GPIO_InitTypeD ...

  9. 【玩转开源】BananaPi R2——移植RPi.GPIO 到 R2

    1. 首先给大家介绍一下什么是RPi.GPIO. 简单去讲,RPi.GPIO就是一个运行在树莓派开发板上可以通过Python去控制GPIO的一个中间件. 现在我这边做了一个基础功能的移植,接下来大家可 ...

随机推荐

  1. Win10安装Keras+Tensorflow+Opencv

    Win10安装keras 安装 Anaconda 清华加速下载链接: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 我选择的版本是: A ...

  2. L5语言模型与数据集

    本次实验使用的数据下载: jaychou_lyrics.txt 链接:https://pan.baidu.com/s/1LJSrkpV84YF61OPmjIHGIw 提取码:dj53 语言模型 一段自 ...

  3. springboot集成JdbcTemplate+druid

    application.yml datasource: username: root password: root url: jdbc:mysql://localhost:3306/early_war ...

  4. 今天探究的CSS属性是box-sizing;

    首先BOX-SIZING属性是CSS3的属性: 语法: box-sizing : content-box || border-box || inherit 取值说明 1.content-box:此值为 ...

  5. Everything信息泄露

    Everything漏洞描述 [Everything]一款搜索文件非常快的工具,其速度之快令人震惊!它还有一个可以通过HTTP 或 FTP 分享搜索结果 的功能.它可以让用户在本地或局域网上的其他电脑 ...

  6. 聊一聊JSONP和图像Ping的区别

    JSONP 在讲 JSONP 之前需要再来回顾一下在页面上使用 script 引入外部的 js 文件时到底引入了什么? 先建立一个 index.js 文件. console.log(123) 再建立一 ...

  7. Caused by: java.lang.NumberFormatException: For input string: " 60"

    原因 原原因:string转int 格式出错 解决:我的输入文件格式在根据“,”分割完之后多出了一个空格,我想要的是“60” 但是分割完之后是“ 60”所以导致格式转换不匹配.

  8. Docker镜像与仓库(四)

    Dockerfile方式创建镜像 https://hub.docker.com/_/centos/ #找一个centos6.6 的dockerfile链接 [root@linux-node1 ~]# ...

  9. Django Channel实时推送与聊天

    先来看一下最终的效果吧 开始聊天,输入消息并点击发送消息就可以开始聊天了 点击 “获取后端数据”开启实时推送 先来简单了解一下 Django Channel Channels是一个采用Django并将 ...

  10. Deep Snake : 基于轮廓调整的SOTA实例分割方法,速度32.3fps | CVPR 2020

    论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以 ...