BS8116A-3驱动程序(使用STM32--STM32cubemx)
来源:互联网 发布:别斯兰人质事件知乎 编辑:程序博客网 时间:2024/06/05 14:12
最近在用BS8116A-3这块触摸芯片,查了一下他的技术文档,里面显示从机地址是0x50,但是用示波器测试是0xA0(有点坑,MD),幸好发现了,不然不知道得调试多久。感谢示波器。
由于如果用标准库函数要自己配置IIC之类的,比较麻烦,而且容易出错,所以我是使用STM32cubemx这个软件配置好IIC,(广告:强烈推荐使用STM32cuemx软件生成程序)
extern void Delayms(unsigned int c)// 普通的延时函数
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
用STM32cubemx配置好之后就是直接在主函数写代码了,
int main(void)
{
/* MCU Configuration----------------------------------------------------------*/
float values;
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
uint8_t GetData1[5]={0};//或者的按键值存在这个数组
uint8_t GetData2[5]={0x08}//要发送的字节:0x08;
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
// MX_ADC_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
while (1)
{
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12)==0)//我自己的单片机连接BS8116A-3的中断引脚,用于触发!
{
HAL_I2C_Master_Transmit(&hi2c1,0xa0,GetData2,1,50);
HAL_I2C_Master_Receive(&hi2c1,0xa0, GetData1,2,50);
HAL_UART_Transmit(&huart1, GetData1, 2, 50);//将结果输出到串口调试助手上,便于测试
Delayms(200);
}
}
/* USER CODE END 3 */
}
至于这个主函数里面的HAL_I2C_Master_Transmit(&hi2c1,0xa0,GetData2,1,50)函数可不是直接用的,要修改里面的库,路径是在stm32l1xx_hal.c。原因是如果你有看技术手册你应该知道单片机发送数据给触摸芯片后是不能有stop停止位的,所以这个函数我们要把他里面的
/* Generate Stop */
// SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP);
上面的这一句和我一样所示注释掉,函数里面总共有两个这个SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP)函数,第一个不用注释,注释第二个,注释完后下下句有句hi2c->Mode = HAL_I2C_MODE_NONE;要修改成hi2c->Mode = HAL_I2C_MODE_MASTER;
接下来是修改HAL_I2C_Master_Receive(&hi2c1,0xa0, GetData1,2,50)这个函数里面的内容了,直接把
/* Wait until BUSY flag is reset */
// if(I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) != HAL_OK)
// {
// return HAL_BUSY;
// }
然后调试应该没问题,需要的朋友们可以使用程序试试,不行的话可联系QQ:593534964进行交流
- BS8116A-3驱动程序(使用STM32--STM32cubemx)
- 使用MATLAB&simulink&stm32mat_target&stm32cubemx开发stm32
- STM32关于触摸芯片 BS8112A-3 BS8116A-3 I2C 源程序 及问题
- 【STM32】使用STM32cubeMX的库读写FLASH数据
- 【STM32】stm32cubemx教程目录
- STM32CUbeMX 使用
- STM32CUBEMX and 战舰STM32开发平台V2 (一)
- 如何使用STM32CubeMX配置ETH(RMII)
- STM32F0 IAP (使用stm32CubeMX)
- 开始使用STM32CubeMX
- 【STM32】keil MDK下重定向printf到串口(基于STM32CubeMX)
- STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)
- STM32生态圈,STM32CubeMX真是好工具
- macOS STM32开发(STM32CubeMX/SW4STM32/ST-Link)
- TM1638八位数码管八按键驱动程序(stm32f103驱动,使用了stm32 3.5库)
- TM1638八位数码管八按键驱动程序(stm32f103驱动,使用了stm32 3.5库)
- STM32CubeMX
- STM32CubeMx
- ubuntu安装 arm-linux-gcc-4.4.3
- c语言_删除数组中的重复数据
- jQuery.grep()
- Io流运用1
- opencv:图像的载入、显示以及创建窗口
- BS8116A-3驱动程序(使用STM32--STM32cubemx)
- spring Data Jpa 相关
- javascript的原始数据类型
- poj 3262 Protecting the Flowers
- leetcode-18. 4Sum
- spring 事务传播
- c里面的存储类
- web 学习笔记8-HTTP协议,请求头,响应头
- Python之网络编程