【STM32】写Keil程序的注意事项

2024-08-23 07:36
文章标签 程序 stm32 注意事项 keil

本文主要是介绍【STM32】写Keil程序的注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 看正点原子的资料使用Keil写STM32程序的时候,总是在不断学习,不断探索。后续又学到啥再更新······

目录

1    Keil设置

1.1    字体设置

1.2    快捷键设置

1.3    快速前往前一操作位置/后一操作位置

2    宏定义

2.1    宏定义函数时为什么使用do{…}while{0} 

3    函数

3.1    形参

4    编写时的注意事项

5    程序出错的日常原因排查 

5.1    不执行(连主程序while循环体内都不执行)

5.2    中断服务函数不执行

5.3    卡在中断服务函数出不来


1    Keil设置

1.1    字体设置

下载了JetBrains Mono字体想用于Keil,但发现Configuration中设置字体可能会无效,需要将Encoding从GB2312改为ANSI才能生效。但同时,使用ANSI就无法使用中文输入了,中文的输入会变成问号。如果用UTF-8编码的话,原有使用GB2312编码的文件中的中文又会乱码,算了,最终还是默认的好用。

1.2    快捷键设置

见 Edit – Configuration – Shortcut Keys

1.3    快速前往前一操作位置/后一操作位置

工具栏按钮的蓝色左右直箭头,也可使用快捷键ctrl + – 以及ctrl + shift + – 来实现。貌似不支持鼠标的前进后退按钮。

2    宏定义

2.1    宏定义函数时为什么使用do{…}while{0} 

复杂逻辑需要使用do{…}while{0}保证宏在替换时的代码合理性以及其不会违反使用者的操作逻辑。

详见这位大佬的文章:【嵌入式C语言】--do{…}while(0)的学习_do{ x ?-CSDN博客

3    函数

3.1    形参

定义和声明函数时,若形参列表是空,就应该设置形参为void,而不是保留为空,否则编译可能出错。

4    编写时的注意事项

  • 无论是.c文件还是.h文件,都需要在文件末尾有新行,否则会warnning。
  • 应尽量别用HAL_Delay函数,可以使用正点原子的delay代替,因为HAL_Delay是基于系滴答计时器的中断实现的,而其中断优先级太低,若在某个外设的中断中使用了HAL_Delay,其就会因为HAL_Delay的中断无法触发而陷入阻塞。

5    程序出错的日常原因排查 

5.1    不执行(连主程序while循环体内都不执行)

  • 自己写的中断是否实现了中断服务函数;
  • 中断服务函数中是否调用了公共中断服务函数;

5.2    中断服务函数不执行

  • 是否__HAL_PPP_ENABLE_IT了相应的中断;
  • 是否HAL_NVIC_SetPriority和HAL_NVIC_EnableIRQ了相应的中断服务;
  • 如果和PPPx有关,即同类外设有多个且自带编号,则检查中断服务函数、中断回调处理函数名和函数内容中的x是否写错,再检查NVIC相关的函数内容中是否写错了PPPx_IRQn的x;

5.3    卡在中断服务函数出不来

  • 是否在中断服务函数中使用了HAL_Delay函数;

这篇关于【STM32】写Keil程序的注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098753

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图