关于STM32 HAL库例程 IO配置问题!

2019-07-20 12:19发布

我在看原子的例程时,在使用HAL库时很多地方的输入IO口配置简化了。。我还特意去翻看了寄存器版本,发现寄存器版本是完整配置的!例如:HAL库串口1初始化时io配置
                __HAL_RCC_GPIOA_CLK_ENABLE();                        
                __HAL_RCC_USART1_CLK_ENABLE();               
        
                GPIO_Initure.Pin=GPIO_PIN_9;                        //PA9
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;               
                GPIO_Initure.Pull=GPIO_PULLUP;                        
                GPIO_Initure.Speed=GPIO_SPEED_FAST;               
                GPIO_Initure.Alternate=GPIO_AF7_USART1;        
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);           

                GPIO_Initure.Pin=GPIO_PIN_10;        
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                  

寄存器版本:
        RCC->AHB1ENR|=1<<0;            
        RCC->APB2ENR|=1<<4;         
        GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);
        GPIO_AF_Set(GPIOA,9,7);        //PA9,AF7
        GPIO_AF_Set(GPIOA,10,7);//PA10,AF7  

PA9、10都重映射了AF7.。也就是USART1,这是为什么呢?
HAL库有自动设置功能吗?我找了一下没找见,求解答!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
huanghan
1楼-- · 2019-07-20 13:07
 精彩回答 2  元偷偷看……
taizonglai
2楼-- · 2019-07-20 14:22
 精彩回答 2  元偷偷看……
caosix
3楼-- · 2019-07-20 14:54
用 HAL库,建议楼主直接用STM32 CUBEMX

图形化 配置 IO 配置 全搞定。。。
许恒博
4楼-- · 2019-07-20 19:13
 精彩回答 2  元偷偷看……
许恒博
5楼-- · 2019-07-20 21:18
caosix 发表于 2017-8-26 22:51
用 HAL库,建议楼主直接用STM32 CUBEMX

图形化 配置 IO 配置 全搞定。。。

我做过一次,不过初接触STM32 还是想多看看代码。。
huanghan
6楼-- · 2019-07-21 02:13
许恒博 发表于 2017-8-27 12:41
我做过一次,不过初接触STM32 还是想多看看代码。。

                GPIO_Initure.Pin=GPIO_PIN_9;                              //PA9
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;           //复用输出模式     
                GPIO_Initure.Pull=GPIO_PULLUP;                         //推挽式输出
                GPIO_Initure.Speed=GPIO_SPEED_FAST;             //输出速度   
                GPIO_Initure.Alternate=GPIO_AF7_USART1;          //这里就是重映射
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //在这函数里初始化

一周热门 更多>