有如下一段代码,假定x为9999时,ncount的值为

在这里插入图片描述

int nCount=0;
while(x)
{
nCount++;
x=x&(x-1);
}

通过观察代码,不难看出,这一段代码求的是十进制数9999转化为二进制数后,其中1的个数
十进制 =9999
二进制 =10011100001111
1的个数为8

下面是一个简单的触摸屏代码示例,使用了c语言和stm32开发板: ``` #include "stm32f4xx.h" void TouchScreen_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; // 启用GPIOC钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // 配置PC0和PC1为输入模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); } void TouchScreen_Read(uint16_t *x, uint16_t *y) { // 读取X坐标 GPIO_ResetBits(GPIOC, GPIO_Pin_0); // 拉低X+引脚 GPIO_SetBits(GPIOC, GPIO_Pin_1); // 拉高Y-引脚 *x = ADC_Read(); // 读取Y坐标 GPIO_ResetBits(GPIOC, GPIO_Pin_1); // 拉低Y-引脚 GPIO_SetBits(GPIOC, GPIO_Pin_0); // 拉高X+引脚 *y = ADC_Read(); } uint16_t ADC_Read(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 启用GPIOA和ADC3钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE); // 配置PA3和PA6为模拟输入模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置ADC3 ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC3, &ADC_InitStructure); // 启用ADC3 ADC_Cmd(ADC3, ENABLE); // 等待ADC稳定 Delay(10); // 开始转换 ADC_SoftwareStartConv(ADC3); // 等待转换完成 while (!ADC_GetFlagStatus(ADC3, ADC_FLAG_EOC)); // 读取转换 return ADC_GetConversionValue(ADC3); } void Delay(__IO uint32_t nCount) { while(nCount--) { } } ``` 此代码使用GPIOC的PC0和PC1引脚连接触摸屏的X+和Y-引脚,并且使用GPIOA的PA3和PA6引脚连接触摸屏的X-和Y+引脚。在TouchScreen_Init函数中,配置GPIOC引脚为输入模式,以及在TouchScreen_Read函数中,根据触摸屏的电阻读取X和Y坐标。ADC_Read函数用于读取ADC转换,其中ADC3连接到PA3和PA6引脚,以便读取X和Y坐标的电阻。最后,Delay函数用于延
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值