微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32写的三路的DS18B20

stm32写的三路的DS18B20

时间:10-02 整理:3721RD 点击:
开发板是正点原子ALIENTEK MiniSTM32,淘宝买的。程序是用例程修改的,使用PA0、PA、PA2就好使,但是使用PA13、PA14、PA15就不行了,不管怎么弄都是只有PA15,关键的几个点,我列出来:
//IO方向设置
#define DS18B20_IO_IN13()  {GPIOA->CRH&=0XFF0FFFFF;GPIOA->CRH|=8<<20;}
#define DS18B20_IO_OUT13() {GPIOA->CRH&=0XFF0FFFFF;GPIOA->CRH|=3<<20;}
#define DS18B20_IO_IN14()  {GPIOA->CRH&=0XF0FFFFFF;GPIOA->CRH|=8<<24;}
#define DS18B20_IO_OUT14() {GPIOA->CRH&=0XF0FFFFFF;GPIOA->CRH|=3<<24;}
#define DS18B20_IO_IN15()  {GPIOA->CRH&=0X0FFFFFFF;GPIOA->CRH|=8<<28;}
#define DS18B20_IO_OUT15() {GPIOA->CRH&=0X0FFFFFFF;GPIOA->CRH|=3<<28;}
//初始化         
u8 DS18B20_Init(u8 channel)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //ê1?üPORTA?úê±?ó
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;                       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_SetBits(GPIOA,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);   
        DS18B20_Rst(channel);
        //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);        //SWD这句话不知道该不该添加,是自己通过阅读别的程序时凭借理解添加到这里的
        return DS18B20_Check(channel);
}
通过看原理图得知,PA13、PA14、PA15同时和JTAG复用,不知道是不是这里需要软件将JTAG关闭一下(我使用串口下载程序,JTAG从来不用)




请给文帮帮我分析一下

奖励2积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top