stm32自学笔记共20页
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
LED0=1;
•
LED1=0;
•
delay_ms(300);
•
}
•}
第二章 跑马灯实验
• Led.c函数
• void LED_Init(void)
•{
•
RCC->APB2ENR|=1<<2; //使能PORTA时钟
•
GPIOA->CRH|=0XFFFFFFFF3;//PA8 推挽输出
•
GPIOA->ODR|=1<<8; //PA8 输出高
• JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD,在原理图上可以看 到PA13和PA15为键盘和JTAG与SWD所共用,而这两种方针接口,他们 和普通的IO口公用,当想使用普通IO口时,必须先把他们关闭。在这 个函数里面设置参数,如果为二进制数00,则代表全部使能,如果是 二进制数01,则是能SWD,如果是10,则表示全部关闭。JTAG是一种 国际标准测试协议,主要用于芯片内部的测试。
• }要想实现一个点亮led小灯的功能,最少只需对3个寄存器进行设 置,第一步是设置外设时钟使能先把PORTA时钟使能,接下来把IO
口设置为输出,在接下来设置输出为高电平还是低电平,这里使用 推挽输出(3.3v),推挽输出主要是增强驱动能力,为外部提供大电 流。
第二章 跑马灯实验
• #ifndef __LED_H • #define __LED_H • #include "sys.h" • #define LED0 PAout(8)// PA8 • #define LED1 PDout(2)// PD2 • void LED_Init(void);//初始化
第一章 建立工程
• Stm32在新建工程是时应该注意的事项。 • 1.选择芯片型号之后,进入工程,此时应该添加文件夹,
即选择Mange Components,要知道,在这里添加的文件 夹都会在目录树上显示出来,在这些文件夹之内添加的 应该是.C的文件。 • 2.应该注意当你想建立一个新的文件时,一定先要建立 一个文件以.C或者.h的形式保存在该文件夹之下,之后 再进行添加。
•
Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发
• • •}
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2
•{
•
RCC->APB2ENR|=1<<2; //使能PORTA时钟
•
JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD
•
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
•
GPIOA->CRL|=0X00000008;
•
GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入
• 3.建立.h文件,.h文件是用来保存一些宏定义和一些函 数声明的,这样能够使函数看起来更加清晰,所以在这 里一定要把各个.h函数的路径添加到工程里面。
第二章 跑马灯实验
• 主函数:
• int main(void)
•{
•
Stm32_Clock_Init(9); //系统时钟设置,把PLL设置为9,比如说当前的时钟为8Mhz,那
第三章 键盘
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发 Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发 Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2 接下来分析一下中断的设置,Ex_NVIC_Config(GPIO_A,13,FTIR),这个中断 设置函数比较简单,里面有三个参数,从前之后依次设置的是GOIO_X, BITX,以及电平触发方式。 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢 占2,子优先级2,组2,这是一个比较复杂的中断管理函数,里面有4个 参数,分别是中断抢占优先级,中断子优先级,中断编号,中断分组。 这里把所有的按键都分配到了第二组,把按键的抢占优先级设置成了一 样,而次优先级不同,KEY0和KEY1的子优先级大于WKUP。
格式应用: • #endif • #ifndef x //先测试x是否被宏定义过 • #define x • 程序段1 //如果x没有被宏定义过,定义x,并编译程序段1
第三章 键盘
• 在本章的学习中,首先利用外部中断函数来实现键盘的功能。首先先来研究一下外部中断函数:
• void EXTIX_Init(void)
第三章 键盘
• RCC->APB2ENR|=1<<2; //使能PORTA时钟
•
JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD
•
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
• 在这里要知道如何看寄存器,当使用|=时就是要利用他的置1功能, 当使用&=时,就要使用它的置0功能。<<是循环左移的意思,移的内 容在符号左边的,符号右边表示要移动的位数。
么stm32将在72MHz的速度下运行。
•
delay_init(72);
//延时初始化,该参数用来指定延时需要延长的微妙数,括号
//内的参数为系统时钟频率
•
LED_Init();
//初始化与LED连接的硬件接口
•
while(1)
•
{
•
LED0=0;
•
LED1=1;
•
delay_ms(300); //该参数用来指定需要延时的毫秒数
•
GPIOA->CRH|=0X80800000;
•
GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
•
GPIOA->ODR|=1<<15; //PA15上拉
•
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
•பைடு நூலகம்
Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发