在线时间104 小时
UID3338547
注册时间2017-1-28
NXP金币14
TA的每日心情 | 无聊 2021-12-29 19:06 |
---|
签到天数: 47 天 连续签到: 1 天 [LV.5]常住居民I
金牌会员
 
- 积分
- 1392
- 最后登录
- 2025-3-4
|
本帖最后由 day_day 于 2019-2-26 12:00 编辑
(一)上电
真的没有想到,有一天连上电都会麻烦,在上一张帖子里面我提到了捣鼓半天也没捣鼓出怎么把那个电源适配器装上。今天总算弄好了,只需要拿那个插头从上方撬开就行。
上电之后发现例程的功能还是挺丰富的:
lcd屏幕上打印出温度的dc采样值,串口同样打印出来:
据说还能通过以太网口连接:
(二)开发环境配置
首先在下载keil的pack包,由于最近国内keil官网的下载抽风了,科学上网也全部炸了,一时间束手无策。
最后在社区大佬的帮助下成功弄到:求LPC1700的keil DFP pack
(三)工程创建
由于这款LPC1768似乎是后娘的型号,在支持上并没有主流的lpc8xx、lpc54xxx系列那么好(MCUXpresso Config Tools v4.0都没有这个型号的配置工具),各种包也难找,于是乎完全依赖起强大的keil。
如下选择上几个支持文件:
添加基本的main文件+main函数之后发现编译有error,一些系统性的头文件缺失,展示来说我是直接添加头文件路径,指向keil安装的支持包:C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include
(四)点亮led
led硬件:
在光盘里面的Industrial Platform 1v3 schematics,看到一个能够直接通过IO控制的led是右下角那颗程序运行指示灯heartbeat。
对应核心板上面的接口,在文件LPC1766 Core 1v0 PCB内:
一开始写程序完全没有思路,打开pack installer,copy了一个example过来:
这个工程的主要功能也是点灯,里面对led配置:
- /**
- \fn int32_t LED_Initialize (void)
- \brief Initialize LEDs
- \returns
- - \b 0: function succeeded
- - \b -1: function failed
- */
- int32_t LED_Initialize (void) {
- uint32_t n;
- /* Enable GPIO clock */
- GPIO_PortClock (1);
- /* Configure pins: Output Mode with Pull-down resistors */
- for (n = 0; n < LED_COUNT; n++) {
- PIN_Configure (LED_PIN[n].Portnum, LED_PIN[n].Pinnum, PIN_FUNC_0, PIN_PINMODE_PULLDOWN, PIN_PINMODE_NORMAL);
- GPIO_SetDir (LED_PIN[n].Portnum, LED_PIN[n].Pinnum, GPIO_DIR_OUTPUT);
- GPIO_PinWrite (LED_PIN[n].Portnum, LED_PIN[n].Pinnum, 0);
- }
- return 0;
- }
复制代码
PIN_Configure:主要是配置端口的复用、输出模式之类的
- /**
- \fn int32_t PIN_Configure (uint32_t function) {
- \brief Set pin function and electrical characteristics
- \param[in] port port number (0..3)
- \param[in] pin pin number (0..31)
- \param[in] function port pin function
- \param[in] mode port pin input mode
- \param[in] open_drain port pin open drain mode
- \returns
- - \b 0: function succeeded
- - \b -1: function failed
- */
复制代码
GPIO_SetDir:配置端口的方向
- /**
- \fn void GPIO_SetDir (uint32_t port_num,
- uint32_t pin_num,
- uint32_t dir)
- \brief Configure GPIO pin direction
- \param[in] port_num GPIO number (0..4)
- \param[in] pin_num Port pin number
- \param[in] dir GPIO_DIR_INPUT, GPIO_DIR_OUTPUT
- */
复制代码
GPIO_PinWrite配置端口的电平,类似GPIO_SetDir就不多说了
例程也没用常见的delay方法闪烁led,而是用systick中断。配置方法也相当简洁,就一个SysTick_Config,但不知道为什么SysTick_Config的原型没找到,core_cm3中断 SysTick_Config被条件编译过滤掉了,此外就没有声明过SysTick_Config,这点让我有些懵。
服务函数:
- void SysTick_Handler (void) {
- static unsigned int i=0;
- i++;
- i = i%100;
- if(i == 0)
- {
- GPIO_PinWrite(0, 7, 0);
- }
- else if(i == 50)
- {
- GPIO_PinWrite(0, 7, 1);
- }
- }
复制代码
systick装载配置为SystemCoreClock/100。
这个值是否合理,先考究一下,打开:
里面提到systick是一个24bit的寄存器:
最大可以装载起15M左右的值。这个系统时钟最多100M,/100后最多1M,完全可以。
编译下载运行:
仿真查看系统时钟:
代码:
main.rar
(390 Bytes, 下载次数: 5)
|
|