OpenEdv-开源电子网

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

imx6ull时钟(clk)问题,bsp_led多定义两个函数会影响时钟的频率?

[复制链接]

6

主题

17

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2015-1-5
在线时间
16 小时
发表于 2023-2-20 23:27:06 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 黑暗主宰 于 2023-2-20 23:34 编辑

在“第十六章 主频和时钟配置实验”章节中学习时钟配置,其中遇到了下面的问题(还未解决)
http://www.openedv.com/forum.php ... 1947&extra=page%3D1

现在又遇到如下问题(源文件在文件中):
1.bsp_led中定义了如下函数
  1. void led_init(void)
  2. {
  3.         GPIO_Pin_Config_T led_config;
  4.         led_config.direction = GPIO_GDIR_OUTPUT;
  5.         led_config.outputLogic = 1;
  6.         led_config.gpio_pin = 3;
  7.         /* 1、初始化IO复用 */
  8.         IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);                /* 复用为GPIO1_IO03 */
  9.        
  10.        
  11.         /* 2、、配置GPIO1_IO03的IO属性       
  12.          *bit 16:0 HYS关闭
  13.          *bit [15:14]: 00 默认下拉
  14.          *bit [13]: 0 kepper功能
  15.          *bit [12]: 1 pull/keeper使能
  16.          *bit [11]: 0 关闭开路输出
  17.          *bit [7:6]: 10 速度100Mhz
  18.          *bit [5:3]: 110 R0/6驱动能力
  19.          *bit [0]: 0 低转换率
  20.          */
  21.         IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);
  22.        
  23.         gpio_init(GPIO1, &led_config);       
  24. }


  25. void led_switch(int led, int status)
  26. {       
  27.         switch(led)
  28.         {
  29.                 case LED0:
  30.                         if(status == ON)
  31.                                 GPIO1->DR &= ~(1<<3);        /* 打开LED0 */
  32.                         else if(status == OFF)
  33.                                 GPIO1->DR |= (1<<3);        /* 关闭LED0 */
  34.                         break;
  35.         }
  36. }

  37. #if 1
  38. void led_on(int led)
  39. {
  40.         switch(led)
  41.         {
  42.                 case LED0:
  43.                         GPIO1->DR &= ~(1<<3);
  44.                         break;
  45.                 default:
  46.                         break;
  47.         }
  48. }

  49. void led_off(int led)
  50. {
  51.         switch(led)
  52.         {
  53.                 case LED0:
  54.                         GPIO1->DR |= (1<<3);
  55.                         break;
  56.                 default:
  57.                         break;
  58.         }
  59. }
  60. #endif
复制代码


2.初始化时钟配置以后,在main.c中使得led没一秒翻转一次
  1. int main(void)
  2. {
  3.         unsigned char led_state = OFF;

  4.         imx6u_clkinit();        /* 初始化系统时钟                         */
  5.         clk_enable();                /* 使能所有的时钟                         */
  6.         led_init();                        /* 初始化led                         */

  7.         while(1)        
  8.         {        
  9.       led_state = !led_state;
  10.       led_switch(LED0, led_state);

  11.       delay(1000);
  12.         }

  13.         return 0;
  14. }
复制代码


如果把上面的 #if 1设置为 #if 0 时钟就会使用800M的时钟,如果不屏蔽就不能成功超频到800M
这是是为什么?
希望可以得到各位大佬的解答

08_clk-test.zip

338.3 KB, 下载次数: 0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 06:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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