官网里HK32F030M例程GPIO例程有小点问题,测试时先把配置PD5和PB5的IO配置删掉或注释掉,不然直接下载测试下次就好顺利再次烧写.下面是代码
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
* @func Çë¸ù¾ÝÊý¾ÝÊֲᣬÀ´Ñ¡Ôñ×Ô¼ºÐèÒª½»»»µÄÒý½Å
*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "hk32f030m.h"
#include "hk32f030m_gpio.h"
static void GpioInit(void);
static void GpioToggle(void);
static void softWareDelay(void);
static void IOMUXGpioInit(void);
int main(void)
/* Infinite loop */
{
GpioInit();
IOMUXGpioInit();
while (1)
{
GpioToggle();
}
}
static void GpioInit(void)
{
GPIO_InitTypeDef gpio;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
gpio.GPIO_Pin = GPIO_Pin_2;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(GPIOD, &gpio);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
gpio.GPIO_Pin = GPIO_Pin_7| GPIO_Pin_6 | GPIO_Pin_3;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(GPIOC, &gpio);
}
// TSSOP20 PIN
static void IOMUXGpioInit(void)
{
GPIO_InitTypeDef m_gpio;
// ʹÄÜIOMUXʱÖÓ
RCC_APB1PeriphClockCmd(RCC_APB1Periph_IOMUX,ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
}
static void GpioToggle(void)
{
GPIOD->ODR ^= GPIO_Pin_2;
softWareDelay();
GPIOC->ODR ^= GPIO_Pin_7;
softWareDelay();
GPIOC->ODR ^= GPIO_Pin_6;
softWareDelay();
GPIOC->ODR ^= GPIO_Pin_3;
softWareDelay();
}
static void softWareDelay(void)
{
uint16_t i;
uint16_t j;
for(i=0;i<400;i++)
{
for(j=0;j<400;j++)
{
__NOP();
}
}
}
刚从C51转过来,一直没搞清IO和封装的引脚对应。百度后才搞明白
stm32的gpio口有五组gpioa,gpiob,gpioc,gpiod,gpioe,分别对应了板上管脚图里的PA,PB,PC,PD,PE
来自网址http://blog.sina.com.cn/s/blog_5489e16b0101hd4v.html这样就方便找到对应的引脚,配置IO了
大神勿喷,菜鸟级别。
|