STM32怎么样把数字信号给内部自带的DA,直接给任意某个GPIO口吗?用到什么库函数?
若以下回答无法解决问题,邀请你更新回答
2个回答
推荐于2016-03-21 · 知道合伙人互联网行家
关注
展开全部
GPIO功能文件相关操作:
使用GPIO功能前,首先要初始化系统,最简单的方法为:添加stm32f10x_rcc.c,打开stm32f10x_conf.h 在第41行将/* #include "stm32f10x_rcc.h""*/两边注释符去掉,在main函数中添加代码SystemInit();
添加stm32f10x_gpio.c
打开stm32f10x_conf.h 在37行将/*#include "stm32f10x_gpio.h"*/两边注释符去掉
GPIO口使能:
1.定义一个初始化类型结构体变量,我们为这个结构体里的各个变量赋值,
GPIO_InitTypeDef GPIO_InitStructure;
2. 开启GPIO时钟,只有开启了GPIO时钟,对应端口才可以正常工作,GPIO口对应时钟APB2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
3. 为结构体赋值
设置GPIO口为输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出,其它选项
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出最大频率,其它选项
设置GPIO口为输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //设置引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//悬空输
附:
GPIO_Mode值
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
GPIO_Speed值
GPIO_Speed_10MHz 最高输出速率 10MHz
GPIO_Speed_2MHz 最高输出速率 2MHz
GPIO_Speed_50MHz 最高输出速率 50MHz
4. 使能GPIO口
GPIO_Init(GPIOA, &GPIO_InitStructure);
例:
void GPIOA0_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
GPIO使用:
输出状态:
GPIO口置高:GPIO_SetBits(GPIOA,GPIO_Pin_0| GPIO_Pin_1);
GPIO口置底:GPIO_ResetBits(GPIOA,GPIO_Pin_0);
写数据到GPIO的某个引脚:GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);
写数据到GPIO:GPIO_Write(GPIOA, 0x1101);
得到GPIO口状态:GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0);
u16 ReadValue;
ReadValue = GPIO_ReadOutputData(GPIOC);
例:
#define LED0_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define LED0_ON GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define LED0 GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)
int main(void)
{
while(1)
{
delay()();
if(LED1)
LED0_OFF;
else LED0_ON;
}
}
输入状态:
得到GPIO口状态:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)
u16 ReadValue;
ReadValue = GPIO_ReadInputData(GPIOC);
这是GPIO的基本配置方法
实现走马灯 按照你自己的板子上小灯连接的对应引脚将里面的引脚换下就好了。
使用GPIO功能前,首先要初始化系统,最简单的方法为:添加stm32f10x_rcc.c,打开stm32f10x_conf.h 在第41行将/* #include "stm32f10x_rcc.h""*/两边注释符去掉,在main函数中添加代码SystemInit();
添加stm32f10x_gpio.c
打开stm32f10x_conf.h 在37行将/*#include "stm32f10x_gpio.h"*/两边注释符去掉
GPIO口使能:
1.定义一个初始化类型结构体变量,我们为这个结构体里的各个变量赋值,
GPIO_InitTypeDef GPIO_InitStructure;
2. 开启GPIO时钟,只有开启了GPIO时钟,对应端口才可以正常工作,GPIO口对应时钟APB2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
3. 为结构体赋值
设置GPIO口为输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出,其它选项
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出最大频率,其它选项
设置GPIO口为输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //设置引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//悬空输
附:
GPIO_Mode值
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
GPIO_Speed值
GPIO_Speed_10MHz 最高输出速率 10MHz
GPIO_Speed_2MHz 最高输出速率 2MHz
GPIO_Speed_50MHz 最高输出速率 50MHz
4. 使能GPIO口
GPIO_Init(GPIOA, &GPIO_InitStructure);
例:
void GPIOA0_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
GPIO使用:
输出状态:
GPIO口置高:GPIO_SetBits(GPIOA,GPIO_Pin_0| GPIO_Pin_1);
GPIO口置底:GPIO_ResetBits(GPIOA,GPIO_Pin_0);
写数据到GPIO的某个引脚:GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);
写数据到GPIO:GPIO_Write(GPIOA, 0x1101);
得到GPIO口状态:GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0);
u16 ReadValue;
ReadValue = GPIO_ReadOutputData(GPIOC);
例:
#define LED0_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define LED0_ON GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define LED0 GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)
int main(void)
{
while(1)
{
delay()();
if(LED1)
LED0_OFF;
else LED0_ON;
}
}
输入状态:
得到GPIO口状态:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)
u16 ReadValue;
ReadValue = GPIO_ReadInputData(GPIOC);
这是GPIO的基本配置方法
实现走马灯 按照你自己的板子上小灯连接的对应引脚将里面的引脚换下就好了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询