回答

收藏

[评测分享] 【灵动Motor-DK电机控制板】-02-假装点了个灯

#板卡评测 #板卡评测 1705 人阅读 | 0 人回复 | 2023-07-23

本帖最后由 xiaoshen-372360 于 2023-7-24 11:26 编辑

首先觉得mm32也开始学习ST做Hall库了,但是实际上感觉mm32的HAL库并没有实现硬件的抽象化,所以觉得这个Hall库还只是改了个名字,换汤不换药,没有从本质上说明这些东西。然后今天正好天气太热,就没有出去玩,就在家折腾了一下mm32的板子,本质上是想跟进一下进度,毕竟还是有了这个试用名额来之不易,前段时间就听说了,mm32的灯点不亮,今天拿到硬件一看,确实点不亮……兄弟们诚不欺我,果然是焊接反了,然后我就想到了两年前的航顺,也是一个试用,把按键教和GND短路了……好像从那个时候起,我就没有用过航顺的东西了……

话虽如此,但是不知道是贴片厂家弄错了还是怎么回事,原理图是没有错的,PCB也是没有错的,包括LED的灯的指示都是正确的,那就只能怪贴片厂家了,在图上个,只有一个LED,是PB9

然后我就按照以前的习惯,自己重新建立了工程,并编写LED驱动代码
MAIN函数就比较简单
int main(void)
{
        InitDelay();
        LED_Init();
        while(1)
        {
       LED_Test();
        }
}


然后就是我把LED和Delay放在一个文件里面了,主要是因为这个板子只有一个灯,单独一个文件就太麻烦。
然后其他的函数就是这样了

  1. #include "Delay.h"
  2. volatile uint32_t PLATFORM_DelayTick;

  3. void InitDelay(void)
  4. {
  5.     RCC_ClocksTypeDef RCC_Clocks;

  6.     RCC_GetClocksFreq(&RCC_Clocks);

  7.     if (SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000))
  8.     {
  9.         while (1)
  10.         {
  11.         }
  12.     }

  13.     NVIC_SetPriority(SysTick_IRQn, 0x0);
  14. }

  15. /***********************************************************************************************************************
  16.   * @brief  Millisecond delay
  17.   * @note   none
  18.   * @param  Millisecond: delay time unit
  19.   * @retval none
  20.   *********************************************************************************************************************/
  21. void Delay_1ms(uint32_t Millisecond)
  22. {
  23.     PLATFORM_DelayTick = Millisecond;

  24.     while (0 != PLATFORM_DelayTick)
  25.     {
  26.     }
  27. }
  28. /*----------------  */
  29. void GPIO_IO_Toggle(GPIO_TypeDef *GPIOn, uint16_t PINn)
  30. {
  31.     if (Bit_RESET == GPIO_ReadOutputDataBit(GPIOn, PINn))
  32.     {
  33.         GPIO_SetBits(GPIOn, PINn);
  34.     }
  35.     else
  36.     {
  37.         GPIO_ResetBits(GPIOn, PINn);
  38.     }
  39. }

  40. /*----------------  */

  41. void LED_Init(void)
  42. {
  43.         GPIO_InitTypeDef GPIO_InitStruct;
  44.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

  45.         GPIO_StructInit(&GPIO_InitStruct);
  46.         GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_9;
  47.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
  48.         GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
  49.         GPIO_Init(GPIOB, &GPIO_InitStruct);
  50. }




  51. void LED_Test(void)
  52. {
  53.         GPIO_IO_Toggle(GPIOB,GPIO_Pin_9);
  54.         Delay_1ms(500);
  55.         GPIO_IO_Toggle(GPIOB,GPIO_Pin_9);
  56.         Delay_1ms(500);
  57. }
复制代码


编译没有报错,孩子睡着了,所以只有明天的时候给大家补一个闪灯的视频和照片了。

最后还是把工程和代码都贴上来,怕自己哪一天忘记了删除了,也好有个备份。
代码:
MM32SPIN 0230_Demo.rar (367.96 KB, 下载次数: 2)


20230724:更新 添加代码,重新对板子的LED进行焊接,点灯成功视频上传。





分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条