TM32F031-Nucleo初体验(寄存器+固件库操作LED)
- UID
- 1066743
|
TM32F031-Nucleo初体验(寄存器+固件库操作LED)
这款Nucleo板真心很小,估测了一下大约5*1.85(cm^2)的尺寸。不过麻雀虽小五脏俱全,该有的基本功能都有,只是受限于板子尺寸的问题难以集成其他高级功能。
由于本人接触STM32的时间不长,也是第一次接触到F0的板子,所以拿到板子首先看了一下社友们的帖子,学到了很多,例如CubeMX、在线Mbed编程等。查看了一下社友们的例程多以Cube库变成或者寄存器编程,所以想着自己做一个标准库的LED程序。借助网上的工程模板对LED的程序进行编写、修改后,做了LED的闪烁实验:(本人经验不足如有问题,请社友们多多指正!)
主函数代码:
/* Includes ------------------------------------------------------------------*/
#include "stm32f0xx.h"
void GPIO_InitConfig(void);
void Delay_us(__IO uint32_t nCount);
void Delay_ms(__IO uint32_t nCount);
/******************************************************************************
* Function Name : main
* Description : 主程序
* Input : None
* Output : None
* Return : None
* Attention : None
******************************************************************************/
int main(void)
{
GPIO_InitConfig();
while (1)
{
GPIO_WriteBit(GPIOB,GPIO_Pin_3,Bit_SET); //写“1”
Delay_ms(100);
GPIO_WriteBit(GPIOB,GPIO_Pin_3,Bit_RESET); //写“0”
Delay_ms(100);
//置位对应的GPIO口
GPIO_SetBits(GPIOB,GPIO_Pin_3);
Delay_ms(500);
//复位对应的GPIO口
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
Delay_ms(500);
/*----- 寄存器操作 -----*/
GPIOB->BSRR = (GPIO_Pin_3);//置位对应GPIO位
Delay_ms(500);
GPIOB->BRR = (GPIO_Pin_3);//复位对应GPIO位
Delay_ms(100);
}
}
/******************************************************************************
* Function Name : GPIO_InitConfig
* Description : GPIO配置
******************************************************************************/
void GPIO_InitConfig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOC Periph clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
/* Configure PC8 and PC9 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/******************************************************************************
* Function Name : Delay | Delay_us
* Description : 延迟程序
* Input : nCount: 延时长度
******************************************************************************/
void Delay(__IO uint32_t nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
void Delay_us(__IO uint32_t nCount)
{
/* 10uS延迟=>10.8uS,100uS延迟=>104uS*/
while (nCount != 0)
{
nCount--;
Delay(10);
}
}
void Delay_ms(__IO uint32_t nCount)
{
/* 10uS延迟=>10.8uS,100uS延迟=>104uS*/
while (nCount != 0)
{
nCount--;
Delay(11000);
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/*******************************************************************************
END OF FILE
*******************************************************************************/ |
|
|
|
|
|