求解,关于stm32单片机的io口使能,为什么我看视频教程的时候没有设置使能,就能使用io口,但是
答案:1 悬赏:0 手机版
解决时间 2021-12-04 20:08
- 提问者网友:蓝琪梦莎
- 2021-12-03 21:49
求解,关于stm32单片机的io口使能,为什么我看视频教程的时候没有设置使能,就能使用io口,但是
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-12-03 22:10
开启GPIO时钟就行了
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
这是调用的库函数 stm32f10x_rcc.c中有
看这个函数(用户函数)里有这一句:
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, 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(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3);
}追问时钟又是什么,为什么是时钟啊,不是使能么,他们是一个东西?追答时钟就是同步脉冲,引脚输出高低电平都是在同步脉冲的指挥下进行的 STM32为了降低功耗,每个部件的时钟都可以开启或关闭,黙认是关闭的
所以用时要打开
至于引脚的输入输出是通用的基本功能,不用打开,直接用,但第二功能第三功能要使能才可用追问感觉好复杂的样子,我待会儿把我写的程序复制过来,你看看是不是开了第二或第三功能
摄像头花了,,,追答你的程序和我给你的原理一样,只是开启 PD口和 PG口时钟
利用串口时 也要 开启时钟,不仅是串口时钟 GPIOA时钟也要开启(串口1引脚在GPIOA上)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
并且使能串口 USART_Cmd(USART1, ENABLE);
我写的是程序是调用库开发,大部分操作寄存器的指令都被封装成库函数了追问这个可以不用开么,你刚刚不是说有一种情况可以不用开时钟么,是什么情况下的,不开多方便追答时钟是必须开的追问好的,谢了你是专门弄单片机的么→_→追答爱好,51弄了很久,STM32也刚学几个月追问我也是诶→_→但是32才接触两周,光研究如何建工程就建了两天
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
这是调用的库函数 stm32f10x_rcc.c中有
看这个函数(用户函数)里有这一句:
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, 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(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3);
}追问时钟又是什么,为什么是时钟啊,不是使能么,他们是一个东西?追答时钟就是同步脉冲,引脚输出高低电平都是在同步脉冲的指挥下进行的 STM32为了降低功耗,每个部件的时钟都可以开启或关闭,黙认是关闭的
所以用时要打开
至于引脚的输入输出是通用的基本功能,不用打开,直接用,但第二功能第三功能要使能才可用追问感觉好复杂的样子,我待会儿把我写的程序复制过来,你看看是不是开了第二或第三功能
摄像头花了,,,追答你的程序和我给你的原理一样,只是开启 PD口和 PG口时钟
利用串口时 也要 开启时钟,不仅是串口时钟 GPIOA时钟也要开启(串口1引脚在GPIOA上)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
并且使能串口 USART_Cmd(USART1, ENABLE);
我写的是程序是调用库开发,大部分操作寄存器的指令都被封装成库函数了追问这个可以不用开么,你刚刚不是说有一种情况可以不用开时钟么,是什么情况下的,不开多方便追答时钟是必须开的追问好的,谢了你是专门弄单片机的么→_→追答爱好,51弄了很久,STM32也刚学几个月追问我也是诶→_→但是32才接触两周,光研究如何建工程就建了两天
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯