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. JUC并发编程基石AQS源码之结构篇

    前言 AQS(AbstractQueuedSynchronizer)算是JUC包中最重要的一个类了,如果你想了解JUC提供的并发编程工具类的代码逻辑,这个类绝对是你绕不过的.我相信如果你是第一次看AQ ...

  2. 如何把Excel表暴力拆分了,python两段代码帮你搞定

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:老方玩编程 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  3. TortoiseSVN的使用,以及冲突解决办法

    接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等. 添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态, ...

  4. JavaScript_Array

    Array 概念特点 值的有序集合: 每一个值叫一个元素: 每个元素在数组中有一个位置,以数字表示,称为索引(下标): 元素可以是任何类型 索引从0开始,最大为2的32次方 数组的创建 数组直接量 v ...

  5. redis: 乐观锁(十)

    监视:watch 正常业务(单线程): 127.0.0.1:6379> set money 100 #模拟存款100元 OK 127.0.0.1:6379> set moneyout 0 ...

  6. ThreadLocal 是什么鬼?用法、源码一锅端

    ThreadLocal 是一个老生常谈的问题,在源码学习以及实际项目研发中,往往都能见到它的踪影,用途比较广泛,所以有必要深入一番. 敢问,ThreadLocal 都用到了哪里?有没有运用它去解决过业 ...

  7. python 利用numpy同时打乱列表的顺序,同时打乱数据和标签的顺序

    可用于网络训练打乱训练数据个标签,不改变对应关系 方法一: np.random.shuffle (无返回值,直接打乱原列表) state = np.random.get_state() np.rand ...

  8. LeetCode 面试题56 - I. 数组中数字出现的次数 | Python

    面试题56 - I. 数组中数字出现的次数 题目 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). ...

  9. 2019-2020-1 20199328《Linux内核原理与分析》第三周作业

    加载内核 这里可以看出有些东西隔一段时间就会打印出来 查看mymain.c 开头的一些语句不再描述 每10000次循环打印一次 这里还是针对的mymain.c文件,这里我们可以根据自己的计算机对频率进 ...

  10. Linux操作系统进入单用户模式的方法

    单用户模式的作用 在使用Linux的过程中,维护人员经常会碰到一些问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的 ...