文章目录
STM32CubeMX新手入门
一、Keil 三个编译区别
1.第一个编译当前文件
2.第二个编译整个工程,发生修改的文件都需要重新编译
3.第三个编译整个工程,所有的文件都需要重新编译
二、使用固件库点亮LED
1.初始化LED_GPIO void LED_GPIO_Config(void)
这部分中操作那个外设,需要看那个外设的原理图,根据原理图进行操作
2.将其写入寄存器 GPIO_Init
主函数中使用LED时先初始化,就可以进行操作了 LED_GPIO_Config();
STM32有GPIOA…GPIOG等7组端口,每组端口有pin0…pin15一共16个引脚
三、中断系统
STM32的中断通道可能由多个中断源共用,这就意味着一个中断服务函数可能被多个中断源共用,所以在中断服务函数的入口处,需要有一个判断机制,用来判断是哪个中断触发了中断,因此有了优先级之分。
ARM M3有16个内核中断,240个外设中断
1.外部中断示意图
PA0:中断源
EXTI:外部中断
触发中断条件:上升沿触发、下降沿触发、双边触发
注意:不能设置成高电平和低电平触发
2.外部中断设计步骤:
1.将GPIO初始化为输入端口
2.配置相关的I/O引脚与中断线的映射条件
3.设置该I/O引脚对应的中断触发条件
4.配置NVIC,使能
5.编写中断服务函数
3.keil 在main函数里面写中断服务函数
四、定时器
1、定时器分类
1.Systick(内核中)
2.看门狗时钟Watch Dog
3.实时时钟RTC
4.基本定时器TIM6、TIM7
5.通用定时器TIM2345
用于输出比较、输入捕获、PWM生成、单脉冲模式输出
6.高级定时器TIM1、TIM8
2.定时器发生中断的时间计算
STM32CcbeMX中关于RCC的配置
1.选择外部晶振时钟
2.clock配置,stm32f429的时钟频率是4-26M,可根据需要具体设置,
3.STM32CcbeMX中关于TIM的配置
4.写定时器服务函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim2.Instance==TIM2)
{
HAL_GPIO_TogglePin(GPIOH,GPIO_PIN_10);
}
}
使能计时器
HAL_TIM_Base_Start_IT(&htim2);//在int main里面写
五、串口数据接发
1.串行接口相关知识
并行通信、串行通信
单工、半双工、全双工
波特率:每秒传输的二进制位数,如9600bps
TTL电平转RS232:MAX3232 SP3232
串口转USB接口:CH340 CP2012
异步串行通信:在双方没有同步时钟的前提下,将一个字符按位进行传输的通讯方式
STM32的串口UASRT就是用的这个通信方式
2.STM32CcbeMX中关于USART的配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSazE8r8-1636120438666)(三个编译区别.assets/image-20210824105746961.png)]](https://img-blog.csdnimg.cn/0025acbffc62431a8b242353301ca03a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5oqT54yr55qE54u8,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center #pic_center )
需要中断可以使能NVIC
3.串口发送函数
回调函数在接收完之后执行,一般用第一个回调函数,第二个回调函数只发送一半数据。