STM32的io口操作
刚刚提了个问,不小心给提交解决了。我使用的是STM32f103c8的芯片,刚刚吧开发环境搭建好,写了第一个程序,但是相应的io没反应。程序运行没错误,生成了HEX文件。下...
刚刚提了个问,不小心给提交解决了。我使用的是STM32f103c8的芯片,刚刚吧开发环境搭建好,写了第一个程序,但是相应的io没反应。程序运行没错误,生成了HEX文件。下面我附上程序。请指教下,谢谢。
#include "stm32f10x.h"
void Delay(__IO u32 nCount);
void LED_GPIO_Config(void);
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*/
int main(void)
{
/* 配置系统时钟为72M */
SystemInit();
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // 亮
// Delay(0x8FFFEF);
// GPIO_ResetBits(GPIOB, GPIO_Pin_4 ); // 灭
}
}
void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
/******************* (C) COPYRIGHT *****END OF FILE****/
/*
* 函数名:LED_GPIO_Config
* 描述 :配置LED用到的I/O口
* 输入 :无
* 输出 :无
*/
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // turn off all led
} 展开
#include "stm32f10x.h"
void Delay(__IO u32 nCount);
void LED_GPIO_Config(void);
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*/
int main(void)
{
/* 配置系统时钟为72M */
SystemInit();
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // 亮
// Delay(0x8FFFEF);
// GPIO_ResetBits(GPIOB, GPIO_Pin_4 ); // 灭
}
}
void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
/******************* (C) COPYRIGHT *****END OF FILE****/
/*
* 函数名:LED_GPIO_Config
* 描述 :配置LED用到的I/O口
* 输入 :无
* 输出 :无
*/
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // turn off all led
} 展开
1个回答
展开全部
确定是置1点亮LED,不是清0点亮?可以试试置1清0都有延时的程序(如下),应该会亮灭交替(原来的程序中少了延时)。如果不行,就置1后用万用表测量对应端口,看对不对。还要检查电路是否外部接电源或地的。
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // 亮
Delay(0x8FFFEF);
GPIO_ResetBits(GPIOB, GPIO_Pin_4 ); // 灭
Delay(0x8FFFEF);
}
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // 亮
Delay(0x8FFFEF);
GPIO_ResetBits(GPIOB, GPIO_Pin_4 ); // 灭
Delay(0x8FFFEF);
}
更多追问追答
追问
不行感觉好像没有将GPIO口初始化成功。依旧什么反应都没,我只是控制亮或者灭都不行。
不行感觉好像没有将GPIO口初始化成功。依旧什么反应都没,我只是控制亮或者灭都不行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询