继续 从51入门STM32----第一步:新建自己的工程 移植固件库
第二步:GPIO使用---点亮LED灯
1。首先对STM32的系统结构稍微了解一下
2。其次对STM32的存储器结构了解一下,图见编程手册中文28页 存储器映射
最好再看一下英文的 英文的更详细
比如说STM32F103C8 有64K Flash 和 20K SRAM
其中64K Flash的地址空间为: 0x8000 0000 --- 0x8000 FFFF
20K SRAM的地址空间为: 0x2000 0000 --- 0x2000 5000
3。大概了解一下STM32的时钟配置,在《糊里糊涂学STM》中讲到 使用SystemInit()简单的配置系统时钟
在使用固件库带的例程(GPIO的例程)的话,
/*!< At this stage the microcontroller clock setting is already configured,
this is done through SystemInit() function which is called from startup
file (startup_stm32f10x_xx.s) before to branch to application main.
To reconfigure the default setting of SystemInit() function, refer to
system_stm32f10x.c file
*/
系统时钟已经在startup_stm32f10x_xx.s中进行了配置,因此目前可以先不配置。
4。对STM32的GPIO了解一下
详细查看中文编程手册,还有模电、数电知识,本人学术浅薄,也搞的不深入。
最后开始编程,配置GPIO引脚,就可以点亮LED灯了。
- GPIO_InitTypeDef GPIO_InitStructure;
int tmp_val = 0;
/* Configure the system clocks */
SystemInit();
RCC_Configuration();
//使能APB2总线外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //关闭调试 端口重新映射
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Write(GPIOB , 0xFFFF);
while (1)
{
GPIO_Write(GPIOB , ~tmp_val);
Delay(0x2FFFFF); // 延时
Delay(0x2FFFFF); // 延时
tmp_val++;
if(tmp_val == 0x100) tmp_val = 0;
}