OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4379|回复: 1

【新手求助】关于基于Mini板库函数跑马灯的程序源码改写,跑马灯不亮

[复制链接]

7

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2021-7-22
在线时间
28 小时
发表于 2021-8-13 18:47:37 | 显示全部楼层 |阅读模式
2金钱
(一)将以下代码添加在sys.c末端:
  1. void GPIO_QuickInit(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode)
  2. {
  3. GPIO_InitTypeDef GPIO_InitStruct1;
  4.        
  5.         switch((uint32_t)GPIOx)
  6.         {
  7.                 case (uint32_t)GPIOA:
  8.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  9.                 break;
  10.                 case (uint32_t)GPIOB:
  11.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  12.                 break;
  13.                 case (uint32_t)GPIOC:
  14.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  15.                 break;
  16.                 case (uint32_t)GPIOD:
  17.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
  18.                 break;
  19.                 case (uint32_t)GPIOE:
  20.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
  21.                 break;
  22.                 case (uint32_t)GPIOF:
  23.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
  24.                 break;
  25.         }


  26.         if(GPIOx == GPIOB)
  27. {
  28.    if((GPIO_Pin == GPIO_Pin_3)|(GPIO_Pin == GPIO_Pin_4))
  29.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  30. }

  31.         if(GPIOx == GPIOA)
  32. {
  33.    if(GPIO_Pin == GPIO_Pin_15)
  34.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  35. }

  36.         if(GPIOx == GPIOA)
  37. {
  38.    if((GPIO_Pin == GPIO_Pin_13)|(GPIO_Pin == GPIO_Pin_14))
  39.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
  40. }

  41. GPIO_InitStruct1.GPIO_Mode = GPIO_Mode;
  42. GPIO_InitStruct1.GPIO_Pin = GPIO_Pin;

  43. GPIO_Init(GPIOx, &GPIO_InitStruct1);
  44. }
复制代码


(二)然后在sys.h中添加如下的代码:
  1. void GPIO_QuickInit(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode);
复制代码
具体位置如图所示:
PHWVZ[[IH`2Q8QNCHP6KT8U.png

(三)最后在led.c中加入如下代码:
  1. GPIO_QuickInit(GPIOA, GPIO_Pin_8, GPIO_Mode_Out_PP);
  2.         GPIO_QuickInit(GPIOD, GPIO_Pin_2, GPIO_Mode_Out_PP);
复制代码
并在此文件引入sys.h

具体位置如图所示:
~2)N57D]K6E68A[~CMC843T.png


以上是整个改写过程。
但是烧录到板子上led灯不亮(板子的led是好的)。还请能够指点一下。

最佳答案

查看完整内容[请看2#楼]

仿真器 进调试 看一下有没有符合自己的逻辑运行就知道了!最后还是得设置到寄存器里边!还有控制LED灯正常是用推挽输出吧!没看到有配置输出!强制类型转换的最好是自己定义一个变量读取之后,再转别去转原来的变量 不然容易出问题!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2021-4-15
在线时间
305 小时
发表于 2021-8-13 18:47:38 | 显示全部楼层
本帖最后由 日渐秃兀 于 2021-8-19 17:55 编辑

仿真器 进调试 看一下有没有符合自己的逻辑运行就知道了!最后还是得设置到寄存器里边!还有控制LED灯正常是用推挽输出吧!没看到有配置输出!强制类型转换的最好是自己定义一个变量读取之后,再转别去转原来的变量 不然容易出问题!
日常敲键--头秃一片
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 20:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表