/* GPIO配置 */
void GPIO_config()
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 使能GPIOC时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* 设置GPIOC寄存器为默认参数 */
GPIO_DeInit(GPIOC);
/* 设置GPIOC为推挽输出 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/* 设置13引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
/* 设置输出速度为50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/* 初始化GPIOC_13 */
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
/* 延时函数 */
void delay_ms(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
int main(void)
{
/* GPIO配置 */
GPIO_config();
while(1)
{
/* 将GPIOC_13拉高 */
GPIO_SetBits(GPIOC,GPIO_Pin_13);
/* 延时200ms */
delay_ms(200);
/* 将GPIOC_13拉低 */
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
/* 延时200ms */
delay_ms(200);
}
}
关键字:STM32 GPIO 推挽输出
引用地址:
STM32之GPIO推挽输出例程
推荐阅读最新更新时间:2024-03-16 16:07
s3c2410_gpio_cfgpin等内核导出函数
//这里面的函数都是内核导出函数/plat-s3c24XX/gpio.c中 #include linux/kernel.h #include linux/init.h #include linux/module.h #include linux/interrupt.h #include linux/ioport.h #include linux/io.h #include mach/hardware.h #include mach/gpio-fns.h #include asm/irq.h #include mach/regs-gpio.h //设置gpio的工作模式,是输入,输出还是其他的 //s3c2410
[单片机]
Stm32-输入捕获
输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。STM32 的输入捕获,简单地说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)中。 1. 相关寄存器介绍 1) 捕获/比较模式寄存器 (TIMx_CCMRx) 当在输入捕获模式下使用的时候,对应上图的第二行描述,从图中可以看出,TIMx_CCMR1 明显是针对 2 个通道的配置,低八位 用于捕获/比较通道 1 的控制,而高八位 则用于捕获/比较通道 2 的控制
[单片机]
F1和F4对GPIO的操作区别
以下是stm32f4xx.h中对GPIO的定义。 typedef struct { __IO uint32_t MODER; /*! GPIO port mode register, Address offset: 0x00 */ __IO uint32_t OTYPER; /*! GPIO port output type register, Address offset: 0x04 */ __IO uint32_t OSPEEDR; /*! GPIO port output speed register, Address offset: 0x08 */ __IO uint3
[单片机]
STM32软件复位办法
在需要软件复位的地方添加如下两句代码: 1 2 __set_FAULTMASK(1); NVIC_SystemReset();
[单片机]
关于STM32的ADC的扫描模式
下面这张截图是 我看的 STM32参考手册的关于ADC状态寄存器ADC1_SR的资料 我经过参考网上的资料 感觉EOC位 好像是每个通道转换结束 置位。而不是像书上这样说的 通道组转换结束时置位。 就像扫描模式,应该是每一个通道转换完就置一次,而不是等所有的通道都结束了才置位的。 不知道我理解的对不对? 书上写错了的? 1L: 额!这个还真不知道 2L(版主): 回复【楼主位】 utopia779 : --------------------------------- 这个要实验一下了.以实际实验结果为准. 3L: 应该是每一个通道转换完就置一次 这样的话DMA才能在每个通道转换完立即取出数据
[单片机]
在RAM中调试STM32程序的配置方法
早就听说可以在RAM中调试STM32程序了,直到昨天晚上看了个视频,自己也想来试试。乘热打铁,今天上午跑到实验室,从网上下载资料,凭着零星的记忆开始配置。不过任何事情都不是一次成功的,这次也不意外。But经过反反复复修改,查资料,修改,查资料。还是成功啦!下面就把我配置的一些经验,结合网上已经有的一些资料傻瓜式总结出来,希望所有像我这样的初学者能够少走弯路。。。。。。 先说说在RAM中调试STM32程序的好处吧! 1. 可以单步调试程序,并且不用像仿真调试那样需要去查看繁琐的寄存器位,直接可以通过实验现象来Debug。 2. 避免擦写Flash次数限制,虽然Flash的烧写次数高达1000次以上,但是也经不起小白程序员
[单片机]
基于STM32的虚拟多线程(TI_BLE协议栈_ZStack协议栈)
基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考了参考TI_BLE协议栈_ZStack协议栈。 #include Hal_Led/Hal_Led.h #include Hal_delay/delay.h #include Hal_Key/Hal_Key.h #include ringbuffer.h #define APP_LED2_BLINK_EVENT 0x0001 #define HAL_LED1_BLINK_EVENT 0x0001 #define TASK_NO_TASK_RUNNING 0xFF unsigned short Hal_ProcessE
[单片机]
STM32 固件库
CMSIS 标准中最主要的为 CMSIS 核心层,它包括了: 内核函数层:其中包含用于访问内核寄存器的名称、地址定义; 设备外设访问层:提供了片上的核外外设的地址和中断定义。 库目录,文件简介 在STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 文件中: Libraries:文件夹下是驱动库的源代码及启动文件。 Project :文件夹下是用驱动库写的例子和工程模板。 Utilities:包含了基于 ST 官方实验板的例程,以及第三方软件库,如 emwin 图形软件 库、fatfs 文件系统。 MCD-ST Liberty…:库文件的 License 说明。 Release_Note.html::
[单片机]