新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2015-1-5
- 在线时间
- 16 小时
|
50金钱
本帖最后由 黑暗主宰 于 2023-2-20 23:34 编辑
在“第十六章 主频和时钟配置实验”章节中学习时钟配置,其中遇到了下面的问题(还未解决)
http://www.openedv.com/forum.php ... 1947&extra=page%3D1
现在又遇到如下问题(源文件在文件中):
1.bsp_led中定义了如下函数- void led_init(void)
- {
- GPIO_Pin_Config_T led_config;
- led_config.direction = GPIO_GDIR_OUTPUT;
- led_config.outputLogic = 1;
- led_config.gpio_pin = 3;
- /* 1、初始化IO复用 */
- IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0); /* 复用为GPIO1_IO03 */
-
-
- /* 2、、配置GPIO1_IO03的IO属性
- *bit 16:0 HYS关闭
- *bit [15:14]: 00 默认下拉
- *bit [13]: 0 kepper功能
- *bit [12]: 1 pull/keeper使能
- *bit [11]: 0 关闭开路输出
- *bit [7:6]: 10 速度100Mhz
- *bit [5:3]: 110 R0/6驱动能力
- *bit [0]: 0 低转换率
- */
- IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);
-
- gpio_init(GPIO1, &led_config);
- }
- void led_switch(int led, int status)
- {
- switch(led)
- {
- case LED0:
- if(status == ON)
- GPIO1->DR &= ~(1<<3); /* 打开LED0 */
- else if(status == OFF)
- GPIO1->DR |= (1<<3); /* 关闭LED0 */
- break;
- }
- }
- #if 1
- void led_on(int led)
- {
- switch(led)
- {
- case LED0:
- GPIO1->DR &= ~(1<<3);
- break;
- default:
- break;
- }
- }
- void led_off(int led)
- {
- switch(led)
- {
- case LED0:
- GPIO1->DR |= (1<<3);
- break;
- default:
- break;
- }
- }
- #endif
复制代码
2.初始化时钟配置以后,在main.c中使得led没一秒翻转一次
- int main(void)
- {
- unsigned char led_state = OFF;
- imx6u_clkinit(); /* 初始化系统时钟 */
- clk_enable(); /* 使能所有的时钟 */
- led_init(); /* 初始化led */
- while(1)
- {
- led_state = !led_state;
- led_switch(LED0, led_state);
- delay(1000);
- }
- return 0;
- }
复制代码
如果把上面的 #if 1设置为 #if 0 时钟就会使用800M的时钟,如果不屏蔽就不能成功超频到800M
这是是为什么?
希望可以得到各位大佬的解答
|
|