SE10与SE09有何区别?

分析来源:http://www.itpub.net/thread-851358-1-1.html


在4.6c以前,se10 是Customizing  Organizer,se09 是Workbentch Organizer,现在统一了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我明白了。为了配置PORTB0,PORTB1,PORTB2和PORTB3为16位ADC,您可以使用MK22FN512VLH12的官方库函数,具体步骤如下: 1. 首先需要打开ADC模块。可以使用ADC_Init()函数实现。 2. 接下来需要配置ADC通道。可以使用ADC_Configuration()函数实现。 3. 然后需要设置ADC采样时钟。可以使用ADC_Clock_Set()函数实现。 4. 最后,需要启动ADC转换。可以使用ADC_Start()函数实现。 下面是一份示例代码,您可以参考一下: ```c #include "MK22F51212.h" void ADC_Init(void) { SIM->SCGC6 |= SIM_SCGC6_ADC0_MASK; // Enable ADC0 clock gate ADC0->CFG1 |= ADC_CFG1_ADICLK(0); // Clock source: Bus clock / 2 ADC0->CFG1 |= ADC_CFG1_ADIV(0); // Clock divide: 1 ADC0->CFG1 |= ADC_CFG1_MODE(3); // 16-bit mode ADC0->SC2 |= ADC_SC2_ADTRG_MASK; // Enable hardware trigger } void ADC_Configuration(void) { PORTB->PCR[0] |= PORT_PCR_MUX(0); // Set PORTB0 to ADC0_SE8 PORTB->PCR[1] |= PORT_PCR_MUX(0); // Set PORTB1 to ADC0_SE9 PORTB->PCR[2] |= PORT_PCR_MUX(0); // Set PORTB2 to ADC0_SE10 PORTB->PCR[3] |= PORT_PCR_MUX(0); // Set PORTB3 to ADC0_SE11 ADC0->SC1[0] |= ADC_SC1_ADCH(8); // Select ADC0_SE8 as input channel ADC0->SC1[1] |= ADC_SC1_ADCH(9); // Select ADC0_SE9 as input channel ADC0->SC1[2] |= ADC_SC1_ADCH(10); // Select ADC0_SE10 as input channel ADC0->SC1[3] |= ADC_SC1_ADCH(11); // Select ADC0_SE11 as input channel } void ADC_Clock_Set(void) { SIM->SCGC6 |= SIM_SCGC6_ADC0_MASK; // Enable ADC0 clock gate ADC0->CFG2 |= ADC_CFG2_ADHSC_MASK; // High speed conversion mode ADC0->CFG1 |= ADC_CFG1_ADLSMP_MASK; // Long sample time ADC0->CFG1 |= ADC_CFG1_ADICLK(0); // Clock source: Bus clock / 2 ADC0->CFG1 |= ADC_CFG1_ADIV(0); // Clock divide: 1 } void ADC_Start(void) { ADC0->SC1[0] |= ADC_SC1_ADCH(8); // Start conversion on ADC0_SE8 ADC0->SC1[1] |= ADC_SC1_ADCH(9); // Start conversion on ADC0_SE9 ADC0->SC1[2] |= ADC_SC1_ADCH(10); // Start conversion on ADC0_SE10 ADC0->SC1[3] |= ADC_SC1_ADCH(11); // Start conversion on ADC0_SE11 } int ADC_Read(int channel) { int result = 0; switch (channel) { case 0: result = ADC0->R[0]; break; case 1: result = ADC0->R[1]; break; case 2: result = ADC0->R[2]; break; case 3: result = ADC0->R[3]; break; default: break; } return result; } void ADC_Set_Channel(int channel) { switch (channel) { case 0: PORTB->PCR[0] |= PORT_PCR_MUX(0); PORTB->PCR[1] &= ~PORT_PCR_MUX(0); PORTB->PCR[2] &= ~PORT_PCR_MUX(0); PORTB->PCR[3] &= ~PORT_PCR_MUX(0); ADC0->SC1[0] |= ADC_SC1_ADCH(8); break; case 1: PORTB->PCR[0] &= ~PORT_PCR_MUX(0); PORTB->PCR[1] |= PORT_PCR_MUX(0); PORTB->PCR[2] &= ~PORT_PCR_MUX(0); PORTB->PCR[3] &= ~PORT_PCR_MUX(0); ADC0->SC1[1] |= ADC_SC1_ADCH(9); break; case 2: PORTB->PCR[0] &= ~PORT_PCR_MUX(0); PORTB->PCR[1] &= ~PORT_PCR_MUX(0); PORTB->PCR[2] |= PORT_PCR_MUX(0); PORTB->PCR[3] &= ~PORT_PCR_MUX(0); ADC0->SC1[2] |= ADC_SC1_ADCH(10); break; case 3: PORTB->PCR[0] &= ~PORT_PCR_MUX(0); PORTB->PCR[1] &= ~PORT_PCR_MUX(0); PORTB->PCR[2] &= ~PORT_PCR_MUX(0); PORTB->PCR[3] |= PORT_PCR_MUX(0); ADC0->SC1[3] |= ADC_SC1_ADCH(11); break; default: break; } } int ADC_Get_Value(int channel) { ADC_Set_Channel(channel); while (!(ADC0->SC1[channel] & ADC_SC1_COCO_MASK)); return ADC_Read(channel); } ``` 上面的代码实现了配置PORTB0,PORTB1,PORTB2和PORTB3为16位ADC,并且写了一个读取采样值函数设置PORTB0为0,PORTB1为1,PORTB2为2和PORTB3为3,输入函数(0)就输出ADC通道PORTB0采样的值。您可以根据需要进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值