怎么让下车转起来?分四步:(这部分内容可以看我下学习笔记1 )
先上图,截图来自小破站 技新课堂的老师的课程
程序设计,思路很重要,思路对了,事半功倍!!
小车程序设计第一步: 让小灯亮起来 !(有点像 hello the world!)
硬件:
单片机系统: STM32F103RCT6芯片 high density(相关资料可以去 ST 官网下载)
软件:
基本思路:单片机系统是通过引脚相互练习的,来控制单片机,就是控制引脚的高低电平
控制是否正确,怎么来检测电平的高低?
怎么写好程序?既要懂寄存器 又要会库函数
首先,第一步是使能 RCC_APB2PeriphClockCmd
使能怎么理解呢?enable ,因为STM 32 为了避免功耗,通过使能 开关 来使能时钟,这样寄存器才能工作。
51单片机中就一个时钟系统包一切都包了,在STM 32 中,我们很明确地做好了分工,让大家各司其职。
定时器的介绍在后一篇文章有详细介绍。
镜像函数RCC_APB1PeriphClockCmd
什么时候用RCC_APB1PeriphClockCmd这个外设时钟,什么时候用RCC_APB2PeriphClockCmd这个外设时钟呢
根据上图外设桥接点
通过 声明 GPIO_InitTypeDef GPIO_InitStructure;
结构体,在系统库函数中已经定义好了,见下面截图:
结构体的元素,包括 GPIO_Pin = GPIO_Pin_5; //LED0-->PA.8 端口配置
GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Speed
main.c 主函数
#include "stm32f10x.h" //stm32f10x.h库的功能是提供对于stm32f10x系列开发板的所有功能的定义与实现
void Delay(u32 count) //通过软件进行延时 缺点:这种实现方法不精确,优点:但却很好实现;
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PA.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化¯GPIOA.8
GPIO_SetBits(GPIOA,GPIO_Pin_5); //PA.8 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置,推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure); //
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
}
}
还有下面两个库函数,我们的LED小灯就亮起来啦