赞
踩
前言: 由于立创搞活动19.9 ,我就搞了一个立创的开发板(ps: 实际上是加运费28.9)。想着来学习一下。
我写代码很少废话的,接下来是开门见山的东西。
立创·梁山派·天空星开发文档https://lceda001.feishu.cn/wiki/QaWRwow7TiXHhgkwF5mcxZLsne7
目录
-------------------------------------------------------分隔符--------------------------------------------------------------
这里使用的是CubeMX进行工程构建,官方的是标准库。
将Debug给选择成串口线,用的是啥勾选啥。有些朋友用的是Jlink呢?
注意: 小心这里,开发板上面的是8MHz 的晶振
反正就是左边的input输入频率写8,右边的时钟写80,168,都可以,只要选择HSE和PLLCLK就行
根据给出的原理图可以知道LED和按键KEY都有一个下拉电阻所以可以配置成以下
注意哦,LED和KEY都是接的低电平,默认低电平。所以后面检测和赋值都是给高电平才是点亮和按下去
配置好之后就可以进行工程生成了
命名和路径自定义,IDE选择自己使用的那一个,比如我用的是KEIL所以选择MDK-ARM。最低版本选择V5就可以我这偷懒就默认5.32。
这个选择仅复制必要的文件和勾选生成独立的.c/.h文件。到这工程配置结束。
选择你所使用的调试器,我使用的是DAP_Link所以选择CMSIS DAP,选择后点击右边的Settings
然后打开如图界面勾选Reset and Run,也就是点击烧录后会直接运行程序。
其实我没使用到按键,但是按键检测大家都会吧???
注意将代码写到CODE BEBIN和CODE END里面,不然后续再次生成的时候会被覆盖
- // 在main.c找到如下位置,构造LED结构体
- /* Private typedef -----------------------------------------------------------*/
- /* USER CODE BEGIN PTD */
-
- // 定义 LED 控制结构体
- typedef struct
- {
- void (*On)(GPIO_TypeDef *, uint16_t); // 点亮 LED 的函数指针
- void (*Off)(GPIO_TypeDef *, uint16_t); // 熄灭 LED 的函数指针
- void (*Toggle)(GPIO_TypeDef *, uint16_t); // 翻转 LED 的函数指针
- void (*Loop)(GPIO_TypeDef *, uint16_t, uint16_t); // 循环点亮与熄灭 LED 的函数指针
- } LED_Control;
-
- /* USER CODE END PTD */
结构体里所需要的有如下函数
- // main.c 找到这个 USER CODE BEGIN 0
- /* Private user code ---------------------------------------------------------*/
- /* USER CODE BEGIN 0 */
-
- // LED 点亮函数
- void LED_On(GPIO_TypeDef * GPIOx, uint16_t LEDx_Pin) {
- HAL_GPIO_WritePin(GPIOx, LEDx_Pin, GPIO_PIN_SET);
- }
-
- // LED 熄灭函数
- void LED_Off(GPIO_TypeDef * GPIOx, uint16_t LEDx_Pin) {
- HAL_GPIO_WritePin(GPIOx, LEDx_Pin, GPIO_PIN_RESET);
- }
-
- // 翻转 LED 的函数
- void LED_Toggle(GPIO_TypeDef * GPIOx, uint16_t LEDx_Pin)
- {
- HAL_GPIO_TogglePin(GPIOx, LEDx_Pin);
- }
-
- // 循环点亮与熄灭 LED 的函数
- void LED_Loop(GPIO_TypeDef * GPIOx, uint16_t LEDx_Pin, uint16_t Delay)
- {
- HAL_GPIO_TogglePin(GPIOx, LEDx_Pin);
- HAL_Delay(Delay);
- }
-
- /* USER CODE END 0 */
这个代码好不好取决于你的LED多不多,反正我自己很少会用这个结构体来写这种简单的东西,加上这个板子只有一个LED,这样写确实挺浪费。不过这个教程主要是写如何使用结构体做某事。
- // main.c 上面有LED的各种函数
-
- LED_Control LED =
- {
- .On = LED_On,
- .Off = LED_Off,
- .Toggle = LED_Toggle,
- .Loop = LED_Loop
- };
-
- /* USER CODE END 0 */
使用这个结构体的Loop进行测试
- // main.c 找到main函数里的while循环
-
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
-
- LED.Loop(GPIOB, LED1_Pin, 200);
- //使用LED的Loop方法(第一个参数写引脚在哪个区,第二个参数写引脚在第几个位置, 第三个是循环闪烁一次的延时时间)
- /* USER CODE END WHILE */
-
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
最后编译,并下载烧录
最后的最后
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。