1. 51单片机,stm32,arino都是用什么语言进行编程的
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arino有自己的编程环境,用户也是用C语言编程。
51单片机的编程
51单片机进入中国比较早,在早前用汇编编程比较多,我在上大学时也是学习的汇编编程,但是现在我用C语言编程,汇编已经不会了。51单片机比较常用的编程环境是Keil,现在Keil更新到Keil5了。如下是51单片机Keil的编程环境。
STM32单片机的编程
STM32单片机是意法半导体推出的高性价比、片上资源丰富的32位单片机,这个系列的单片机我一直在用,都是用C语言进行编程,官方推出的库函数和HAL库都是用C语言编程的,虽然有一部分汇编共存。STM32单片机用KeilMDK进行编程。
Arino的编程
Arino是一款做的非常成功的开源硬件,并且有自己的开发环境,将底层的寄存器设置都进行了封装,用户不用自己配置寄存器,调用封装好的函数即可,可以在官方网站下载编程IDE。Arino旨在培养用户的编程兴趣,简化了技术难度,很受欢迎。
在用户层面,现在C语言编程已经是主流液敏,C语言的移植性和可读性比汇编蔽槐语言有很大的优势,也有闹并枝很多人在使用汇编编程,尤其是涉及到底层时。
2. (!MCU_IO_GET(HAL_BOARD_IO_BUTTON_1_PORT, HAL_BOARD_IO_BUTTON_1_PIN))鍦ㄥ崟鐗囨満绋嫔簭涓杩欐槸浠涔堟剰镐
HAL_BOARD_IO_BUTTON_1_PORT鏄绔鍙e彿锛屼緥濡侾1
HAL_BOARD_IO_BUTTON_1_PIN鏄绔鍙g殑浣嶏纴渚嫔侠it5
鍑芥暟镄勬剰镐濆氨鏄鍙朠1^5镄勫綋鍓岖姸镐併
鍓嶉溃镄勶紒鏄鍙栧弽镄勬剰镐濄备篃灏辨槸璇村傛灉P1^5涓洪珮鐢靛钩杩欓噷杩斿洖0锛屽傛灉P1^5涓轰绠鐢靛钩杩欓噷杩斿洖1銆
3. STM32 的 HAL 库好用吗
别人写的 你参考一下:
半年前接触 STM32,刚开始 MCU 用的 32F1,库用的标准外设库 3.5,写过一些简单的东西。
再后来发现 ST 还有一个软件叫做 STM32 CUBE MX,可以自动的生成初始化程序,对于我这个 32 新手来说无疑是天降福音!终于不用为繁琐的配置而苦恼了(其实就是自己对各项配置不熟,而且没有自己积累的程序可以 Ctrl C + Ctrl V)。
虽然 CUBE 用的是 ST 新出的 HAL 库,与以前的 标准外设库完全不兼容,甚至基本的 I/O 操作都变了,会让习惯了
标准外设库的人很苦恼。但是我对标准外设库也不是很熟,而且 CUBE 的界面化设计真的让 配置工程变得很方便,再加上它还有一个类似于 FPGA
的引脚分配界面,让资源分配,PCB 布局布线也方便了不少,于是我选择了用 CUBE ,用 HAL 库。
很早就开始的写 32 的朋友有不少,他们也试过 HAL 库,可最后无一例外都选择了继续使用标准外设库。他们表示完全不习惯 HAL 库,另外 HAL 库不太好,毕竟是自动生成的配置,没有自己手动配置的来得熟悉来得透彻,谁知道软件是怎么给你配置的工程。另外 CUBE 就是给那些不会写 32 的人用的(ST 的官方的说法似乎也是 HAL 是为了方便做嵌入式相关且对底层不熟的人设计的,但想不通他为何要把两个库做得不兼容)。
前面一直在画 PCB ,调 PCB ,做机械之类的,没有写程序。最近又开始写 32,现在用的 MCU 是 32F4,库是 HAL/F4库 1.6.0。可是我发现我连 GPIO 的上拉输出都实现不了,无论如何 I/O 始终默认输出低电平(操作 I/O可以实现电平跳变),这个问题我昨天查了一天,从库到最底层的寄存器都看了,可没发现什么问题。周围用 HAL 库的就我一个。。。
有些无奈了,难道 HAL 库真有什么问题吗?如果真有这么明显的问题,ST 官方肯定早就发现了。
已经下好了标准外设库,打算换标准外设库,工程从头到尾都自己配置,这样出了问题也更方便找。
可是我始终有一点想不明白,既然 ST 官方在推 HAL 库,那肯定也有他的道理,我们也应该勇于接受新事物,为何身边的朋友却都不愿意接纳 HAL 库。
4. 濡备綍閰岖疆stm32f1镄删al搴
灏嗕笅杞藉ソ镄勫浐浠跺簱娣诲姞鍒板伐绋嬬洰褰曚腑锛屽苟鍦ㄥ伐绋嬩腑娣诲姞鐩稿簲镄勬枃浠讹纴浠ラ棯鐑丩ED𨱔涓轰緥瀛愩
鏂板缓user銆乸roj鏂囦欢澶广
澶嶅埗 STM32Cube_FW_F1_V1.4.0\Drivers\STM32F1xx_HAL_Driver\Inc 閲岀殑 stm32f1xx_hal_conf_template.h 鍒皍ser鐩褰曚腑锛屽苟閲嶅懡钖崭负stm32f1xx_hal_conf.h銆
澶嶅埗 STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Templates\Src 鏂囦欢澶归噷闱㈢殑 stm32f1xx_it.c 浠ュ强 STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Templates\Inc 鏂囦欢澶归噷闱㈢殑 stm32f1xx_it.h 鍒皍ser鏂囦欢澶逛腑銆傚傛灉stm32f1xx_it.c 涓璖ysTick_Handler 涓虹┖镄勮瘽锛岃峰湪璇ユ枃浠剁殑鏀剧疆澶存枃浠剁殑鍦版柟娣诲姞#include "stm32f1xx.h" 濡备笅锲炬墍绀猴细
锛
骞跺湪SysTick_Handler 鍑芥暟涓娣诲姞HAL_IncTick(); 锛屽备笅锲炬墍绀猴细
銆
鏂板缓涓涓狢鏂囦欢锛岃緭鍏ヤ緥绋嬨
娣诲姞绋嫔簭浠g爜锛 STM32Cube_FW_F1_V1.4.0\Drivers\STM32F1xx_HAL_Driver\Src鏂囦欢澶归噷闱㈢殑鍗旷墖链洪┍锷ㄧ▼搴(镙规嵁闇瑕佹坊锷)銆 STM32Cube_FW_F1_V1.4.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates 鏂囦欢澶归噷闱㈢殑 system_stm32f1xx.c 銆 STM32Cube_FW_F1_V1.4.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm 鏂囦欢澶归噷闱㈢殑钖锷ㄦ枃浠(镙规嵁瀹为檯𨱍呭喌娣诲姞)銆 user 鏂囦欢澶归噷闱㈢殑 stm32f1xx_it.c 鍜 gpio_demo.c 娣诲姞鍒板伐绋嬬殑绋嫔簭鏂囦欢濡备笅锲炬墍绀猴细
娣诲姞镄勫ご鏂囦欢璺寰勫备笅锲炬墍绀猴细
鍦╟/c++缂栬疟鍣ㄩ夐”瀹忓畾涔変竴镙忎腑娣诲姞STM32F103xE,USE_HAL_DRIVER (镆ョ湅stm32f1xx.h)锛屽备笅锲炬墍绀猴细
缂栬疟